Objective c 如何将文本文件正确传递给NSFileManager
我正在学习Objective-C,向NSFileManager类传递文本文件时遇到问题。我在程序所在的同一目录中创建了新的空文件“testfile”,但NSFileManager不知何故找不到该文件。我不知道问题是什么:Objective c 如何将文本文件正确传递给NSFileManager,objective-c,nsfilemanager,Objective C,Nsfilemanager,我正在学习Objective-C,向NSFileManager类传递文本文件时遇到问题。我在程序所在的同一目录中创建了新的空文件“testfile”,但NSFileManager不知何故找不到该文件。我不知道问题是什么: NSString *fileName = @"testfile"; NSFileManager *fileMgr; NSDictionary *attrib; fileMgr = [NSFileManager defaultManager];
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;
}
这是我的程序的附加屏幕截图
很可能该文件不在程序运行的目录中。从Xcode运行程序时,它通常直接在Xcode项目的顶层运行。NSLog应该准确地告诉您哪个目录
请注意,默认情况下,Xcode为整个项目提供了一个顶级目录,为每个目标提供了代码的子目录。因此,如果您的项目直接位于主目录中,Xcode将在中运行该程序
/Users/<your home>/prog36
/Users//prog36
但是您的文本文件(位于目标目录中)处于
/Users//prog36/prog36
请注意两个嵌套目录,都称为
prog36
,当前目录是什么?那个文件在那个目录里吗?是的。如果你看屏幕截图,你会发现我把它放在了文件所在的同一个目录中……当然,如果我正确理解了同一个目录的意思,我想你不会这么做。查看打印的NSLog()
调用的目录,并将其与测试文件所在的目录进行比较。通常情况下,您会将文件包含在应用程序包中,然后使用NSBundle
调用确定应用程序包当前所在的位置。例如,请参阅有关如何在生成命令行工具时将文件复制到生成目录的说明。好的,谢谢,我将尝试:)
/Users/<your home>/prog36/prog36