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