0

我正在使用 NSFileManager 并且我正在尝试将文件复制到路径“/var/mobile/Applications/7AC2295E-2775-41EA-B017-AB4048A09F0C/Document”,该文件将正常复制。

但是每次我删除并再次安装应用程序时,“7AC2295E-2775-41EA-B017-AB4048A09F0C”的路径都会随机更改。那么,有没有办法获取我的应用程序的正确路径或搜索文件名,如果文件存在则替换\删除..etc文件?多谢。

4

3 回答 3

0

如果您的应用程序需要将文件写入其 Documents 目录。
使用类似的东西:

NSString  *filePath = NSHomeDirectory();

然后将您的实际文件名附加到 filePath。
然后在 FileManager 调用中使用 filePath。

于 2013-03-26T23:59:06.797 回答
0

您不必使用绝对路径,使用类似

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
[[NSFileManager defaultManager] copyItemAtPath:[[NSBundle mainBundle]pathForResource:@"test" ofType:@"txt"] toPath:[documentsDirectory stringByAppendingPathComponent:@"test.txt"] error:nil];

这演示了将文件test.txt从应用程序包复制到文档目录。做这样的事情来创建一个文件test.txt

[[NSFileManager defaultManager] createFileAtPath:[documentsDirectory stringByAppendingPathComponent:@"test.txt"] contents:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://a-cstudios.com/text.json"]] attributes:nil];

编辑

如果您使用它并想在越狱设备上使用它,那么在沙箱中放入东西就像我之前说的一样,所以您仍然不必使用 UUID。如果你想把一些东西放在系统目录中,那就是你会使用类似的东西/usr/include/,或者你想要的任何地方。要将某些内容放入另一个应用程序沙箱中,您必须使用完整路径,并且您必须知道 UUID,因为那不是沙箱的一部分。因此,除非您将文件复制到制作的应用程序中,否则您必须使用完整路径。

于 2013-03-26T23:52:40.893 回答
0

访问Documents应用沙箱中目录的正确方法是:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = paths[0];

然后你创建你的路径:

NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"filename.ext"];
于 2013-03-26T23:56:39.640 回答