无法使用NSFileManager查找文件

时间:2014-08-20 22:52:50

标签: objective-c

我试图用NSFileManager找到一个文件。该文件存在但我的路径永远不会是正确的,无论它的措辞如何。我使用的代码如下。为什么NSFileManager找不到文件?

NSString      *myFile      = @"file1658.pdf";
NSFileManager *fileManager = [NSFileManager defaultManager];

if ([fileManager fileExistsAtPath:myFile]) {
    NSLog(@"good");
}

2 个答案:

答案 0 :(得分:1)

MyFile不是完整路径(例如" /Users/Joe/Documents/file1658.pdf"),因此NSFileManager正在当前工作目录中查找它。你可以看到-[NSFileManager currentDirectoryPath]的内容。

您需要在myFile中包含文件的完整路径,或者使用-[NSFileManager changeCurrentDirectoryPath:]设置正确的工作目录。

// If myFile is in "/Users/joe/Documents"...
[fileManager changeCurrentDirectoryPath:@"/Users/joe/Documents"];

if ([fileManager fileExistsAtPath:myFile]) {
    NSLog(@"good");
}

答案 1 :(得分:0)

Apple努力让您将文件放在合理的位置。我存在的文件,但您必须提供完整路径,例如/Users/user2759189/file1658.pdf或通过其他方式指定它所在的文件夹。

应用包

如果文件在您的应用包中(例如,您已使用&#34添加它;将文件添加到[项目]"在XCode中),您可以通过以下方式获取其路径:

NSString *myFile = [[NSBundle mainBundle] pathForResource:@"file1658" ofType:@"pdf"];

搜索路径

您可以使用基础函数NSSearchPathForDirectoriesInDomains和一些内置常量以文明的方式查找用户文档。例如,如果文件位于用户的“文档”文件夹中,则可以使用以下内容:

NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *myFile = [documentsPath stringByAppendingPathComponent:@"file1658.pdf"];