fileExistsAtPath:(NSFileManager)

时间:2010-07-29 22:51:27

标签: objective-c cocoa cocoa-touch

这个方法应该以路径作为参数吗?

看起来它需要一个文件名作为路径:

例如,/ home / file.txt是一个文件,而/ home /是一个路径。这个方法看起来像前者作为参数。

3 个答案:

答案 0 :(得分:7)

你对“路径”与“文件”的区别并不是Unix中常见的。路径的最终元素是否是文件不会影响它是路径的事实。 “/home/file.txt”看起来像一个绝对的文件路径(尽管它实际上可能是一个看似命名的目录)。 “/ home /”是绝对目录路径。两者都是路径。 (那么是“foo / bar” - 你会在你的术语中称之为“文件”或“路径”吗?如果不检查该路径上的对象,我们就无法知道它是否命名目录或文件。)Apple正在使用正常意义上的术语。

答案 1 :(得分:2)

是的,它需要一个字符串作为路径 - 请参阅documentation

  

<强>参数
  路径
  文件或目录的路径。如果路径以波形符号(~)开头,则必须首先使用stringByExpandingTildeInPath进行展开,否则此方法将返回NO

请注意,/home/file.txt 是路径,就像/home/一样。前者不是目录,而后者是。

答案 2 :(得分:2)

如果您想查找文件和文件夹之间的区别,请参阅-fileExistsAtPath:isDirectory:

用法:

BOOL isDirectory;
if ([self fileExistsAtPath:@"/Users/me/Subfolder" isDirectory:&isDirectory] && isDirectory)
{
    // Exists and is a directory. Isn't that neat?
}