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



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

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:filePath]];
if (data == NULL){
   ...
}

我总是得到NULL.

比我发现NSFileManager

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

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

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

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

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

NSData处理的内容(或数据),也许是一个文件,可能不是。

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

相关内容

最新更新