这两种获取文件路径的方法是否相同?

时间:2011-06-25 04:06:38

标签: iphone objective-c directory filepath documents

NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
return [[pathArray objectAtIndex:0] stringByAppendingPathComponent:@"data.plist"];

return [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];

该文件存储在我的文档文件夹中。

2 个答案:

答案 0 :(得分:3)

不,他们不是。前者返回应用程序的Documents目录中名为data.plist的文件的路径,后者返回应用程序包中名为data.plist的文件的路径,其中包含所有应用程序的资源,可执行文件等。

答案 1 :(得分:2)

来自NSSearchPathForDirectoriesInDomains的{​​{3}}

  

创建一个路径字符串列表   指定的目录   域。该列表按顺序排列   你应该搜索的   目录。如果expandTilde为YES,   如图所示,倾斜度得到扩展   stringByExpandingTildeInPath。

来自NSBundle方法的documentation pathForResource:ofType:

  

该方法首先寻找匹配   非本地化的资源文件   指定的资源目录   束。 (在Mac OS X中,此目录   通常称为资源,但在   iOS,它是主要的捆绑目录。)   如果匹配的资源文件不是   发现,它然后看起来在顶层   任何特定语言的   “.lproj”目录。 (搜索   订购特定语言   目录对应于用户的   偏好。)它没有递归   通过任何其他子目录   这些地点。

因此,前者在目录中查找文件,后者在包中查找。这些可能不一致。