如何正确地将文本文件传递给 NSFileManager
Posted
技术标签:
【中文标题】如何正确地将文本文件传递给 NSFileManager【英文标题】:How to correctly pass a textfile to NSFileManager 【发布时间】:2013-09-16 11:51:00 【问题描述】:我正在学习 Objective-C,但在将文本文件传递给 NSFileManager 类时遇到问题。我在我的程序所在的同一目录中创建了新的空文件“testfile”,但 NSFileManager 不知何故找不到这个文件。不知道是什么问题:
NSString *fileName = @"testfile";
NSFileManager *fileMgr;
NSDictionary *attrib;
fileMgr = [NSFileManager defaultManager];
NSLog(@"%@",[fileMgr currentDirectoryPath]);
// verifying the test file exists
if([fileMgr fileExistsAtPath: fileName] == NO)
NSLog(@"File doesn't exist");
return 1;
这是我的程序的附加屏幕截图
【问题讨论】:
当前目录是什么?那个文件在那个目录里吗? 是的。如果您查看屏幕截图,您可以看到我将它放在文件所在的同一目录中...如果我当然正确理解同一目录的含义 我不认为你这样做。查看NSLog()
调用打印的目录并将其与测试文件所在的位置进行比较。您通常要做的是将文件包含在应用程序包中,然后使用NSBundle
调用来确定应用程序包当前所在的位置。
参见***.com/a/17708041/1187415,了解在构建命令行工具时如何将文件复制到构建目录中。
好的,谢谢,我试试看:)
【参考方案1】:
很可能确定该文件不在程序运行所在的目录中。当您从 Xcode 运行程序时,它通常直接在 Xcode 项目的顶层运行。 NSLog 应该准确地告诉你是哪个目录。
请注意,默认情况下,Xcode 有一个用于整个项目的***目录和用于每个目标的代码的子目录。所以如果你的项目直接在你的主目录下,Xcode 会在
中运行程序/Users/<your home>/prog36
但您的文本文件(位于目标目录中)在
/Users/<your home>/prog36/prog36
注意两个嵌套目录,都称为prog36
【讨论】:
以上是关于如何正确地将文本文件传递给 NSFileManager的主要内容,如果未能解决你的问题,请参考以下文章