2010-07-29 80 views
1

该方法是否应该将路径作为其参数?fileExistsAtPath:(NSFileManager)

它看起来就像一个文件名作为路径:

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

+0

按照惯例,方法参数的名称告诉你什么,它预计通过将输入的最后一次。在这种情况下,它是file_at_Path,所以它需要一个路径。相比之下,像path_for_fileName这样的东西会期望一个包含文件名的字符串,并且会返回一个路径。 – TechZen 2010-07-29 23:35:49

+0

为什么downvote?代码示例显示正在传递文件名。 – 2010-07-29 23:50:59

+0

不是这里的低调选民,但它可能是由于主题和第一句话的结合。你应该小心地用更精确的主题来提出更完整的问题,等等。 – 2010-07-30 00:56:32

回答

7

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

2

是的,它需要一个字符串,是一个路径 - 看到documentation

参数
路径
一个文件或目录的路径。如果路径以代字号开始(~),则必须先用stringByExpandingTildeInPath扩展它,否则此方法返回NO

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

+0

它看起来像一个文件名而不是一个路径 – 2010-07-29 23:47:08

+0

你为什么会这样认为它的参数甚至被命名为'path' – 2010-07-29 23:48:20

+0

参数是命名路径,但我正在查看的代码正在传递文件名 – 2010-07-29 23:50:23

2

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

用法:

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