我试图用NSFileManager找到一个文件。该文件存在但我的路径永远不会是正确的,无论它的措辞如何。我使用的代码如下。为什么NSFileManager找不到文件?
NSString *myFile = @"file1658.pdf";
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:myFile]) {
NSLog(@"good");
}
答案 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"];