使用NSData或NSFileManager检查文件是否存在之间的区别

时间:2012-06-11 02:08:38

标签: objective-c cocoa-touch nsdata nsfilemanager

我正在尝试检查文件是否存在。如果我用这个:

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:filePath]];

if (data == NULL){
   ...
}

我总是得到NULL

比我找到NSFileManager

NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:filePath])

按照我的预期工作。导致这两个程序之间差异的原因是什么?

3 个答案:

答案 0 :(得分:3)

您传递给URLWithString的文件路径是什么?如果它是正常路径(不以file:// ....开头),那么您应该使用fileURLWithPath:将字符串路径转换为URL。

答案 1 :(得分:2)

这两个类只是略有关联。您使用的第一个函数是一种方便的方法,它几乎肯定在后台使用NSFileManager。但是,NSData有许多与文件无关的用途。

您使用的两个中的哪一个取决于您的意图。如果要读取文件的内容,可能会使用第一个。如果要删除文件(如果存在),则肯定会使用第二个文件。

答案 2 :(得分:0)

NSData处理内容(或数据),可能是文件,可能不是。

NSFileManager处理文件系统上的文件,例如文件的路径,复制/移动,枚举文件夹,检查权限等。它更多地与文件的抽象而不是文件的内容有关。 / p>