每当我写一个文件(使用诸如`NSArray writeToFile:atomically:“之类的方法时,我首先使用:
NSString* rootDir=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString* fileName=[rootDir stringByAppendingPathComponent: @"my_file_name"];
如果我只是写@"my_file_name"
而写入文件在哪里?
答案 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决定改变未来操作系统版本的行为。