4

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

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

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

我总是得到NULL

比我发现NSFileManager

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

像我期望的那样工作。是什么导致这两个程序之间的差异?

4

3 回答 3

3

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

于 2012-06-11T02:49:38.730 回答
2

这两个类只有轻微的相关性。您使用的第一个函数是一个方便的方法,几乎​​可以肯定在后台使用 NSFileManager。但是,否则 NSData 有许多与文件无关的用途。

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

于 2012-06-11T02:11:11.510 回答
0

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

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

于 2012-06-11T02:21:22.433 回答