2010-08-31 80 views
2

任何人都知道如何测试字符串是否是Mac OS X中的有效文件名,而不是尝试使用该名称创建文件?如何在Mac OS X中测试有效的文件名

我遇到的问题是,有时文件名可能太大。 OSX对文件名和Unicode字符有一个字节限制,因为它们可以超过1个字节,所以不能检查字符串的长度。

+0

此外,该字符串可能有一个无效的Unicode字符序列(例如,破坏的代理对)或斜线。 – 2010-08-31 20:15:12

+0

很大程度上取决于您正在写入的文件系统。特别是我相信很多网络文件系统在实际尝试之前无法告诉你什么是有效的。 – 2010-08-31 23:15:13

回答

-2

我认为OSX上唯一无效的字符(除了控制字符)是冒号 - 所以你只需要测试新文件名是否包含冒号。

+1

不好的建议。比如说,“/”是什么? – 2014-09-05 09:31:26

0

使用NSFileManager.

- 更新时间:

试试这个:

if([testPath compare: [NSString stringWithUTF8String:[testPath fileSystemRepresentation]]] == NSOrderedSame) { 
    //testPath is a valid Path 
} 

什么就做虽然不保证。

+0

我需要知道文件名是否有效,而不是文件是否存在。 – Randall 2010-08-31 17:34:36

+1

试试这个'[NSString stringWithUTF8String:[myPath fileSystemRepresentation]];' – 2010-08-31 17:38:02

+0

我已经试过用一本书中含有冒号的任意句子。然而,使用这种方法,这本书中的字符串被认为是有效的路径......(这显然是错误的) – Tafkadasoh 2012-11-27 15:48:12

1

在Mac OS X上,文件不过是资源;路径/文件名就是位置。使用+ (id)fileURLWithPath:(NSString *)path创建一个NSURL对象。如果文件名是有效的,该方法将只返回一个有效的对象。从苹果文档

摘录:

  • NSURL对象可以用来指文件,是这样做的首选方式。
  • NSURL类将失败,如果传递的路径创建一个新的NSURL对象是没有很好地形成,该路径必须符合RFC 2396