什么是默认文件读/写位置?

时间:2011-06-22 01:35:33

标签: iphone

每当我写一个文件(使用诸如`NSArray writeToFile:atomically:“之类的方法时,我首先使用:

NSString* rootDir=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString* fileName=[rootDir stringByAppendingPathComponent: @"my_file_name"];

如果我只是写@"my_file_name"而写入文件在哪里?

3 个答案:

答案 0 :(得分:2)

它将被写入您的应用程序文件夹,但在这种情况下,NSArray writeToFile:atomically:将返回NO,因为您无权在那里撰写

答案 1 :(得分:1)

它会将其写入应用程序设置的当前目录。路径相对于[NSFileManager currentDirectoryPath]

答案 2 :(得分:0)

试一试,看看。你可能会感到惊讶。

我希望它能够推迟到POSIX层;即它写入“当前目录”。令人惊讶的是,在iOS上,当前目录是/而不是/var/mobile/Applications/SOME-GUID-ABCDEF/MyApp.app(或者现在安装的任何地方)或其父目录。在GDB中,您可以尝试类似print (char*)getcwd((char*)0,(size_t)0)的内容(请注意,这会泄漏......)。

您还可以尝试[NSData dataWithContentsOfFile:@"MyImage.png"]var/mobile/Applications/.../MyApp.app/MyImage.png(省略前导/使其成为相对路径)以查看它是否在应用的捆绑目录中查找。

无论哪种方式,我都会避免依赖它,以防Apple决定改变未来操作系统版本的行为。