我正在使用 NSFileManager 并且我正在尝试将文件复制到路径“/var/mobile/Applications/7AC2295E-2775-41EA-B017-AB4048A09F0C/Document”,该文件将正常复制。
但是每次我删除并再次安装应用程序时,“7AC2295E-2775-41EA-B017-AB4048A09F0C”的路径都会随机更改。那么,有没有办法获取我的应用程序的正确路径或搜索文件名,如果文件存在则替换\删除..etc文件?多谢。
我正在使用 NSFileManager 并且我正在尝试将文件复制到路径“/var/mobile/Applications/7AC2295E-2775-41EA-B017-AB4048A09F0C/Document”,该文件将正常复制。
但是每次我删除并再次安装应用程序时,“7AC2295E-2775-41EA-B017-AB4048A09F0C”的路径都会随机更改。那么,有没有办法获取我的应用程序的正确路径或搜索文件名,如果文件存在则替换\删除..etc文件?多谢。
如果您的应用程序需要将文件写入其 Documents 目录。
使用类似的东西:
NSString *filePath = NSHomeDirectory();
然后将您的实际文件名附加到 filePath。
然后在 FileManager 调用中使用 filePath。
您不必使用绝对路径,使用类似
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,因为那不是沙箱的一部分。因此,除非您将文件复制到您制作的应用程序中,否则您必须使用完整路径。
访问Documents
应用沙箱中目录的正确方法是:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = paths[0];
然后你创建你的路径:
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"filename.ext"];