NSFileManager UUID app目录

时间:2013-03-26 23:49:07

标签: ios nsfilemanager

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

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

3 个答案:

答案 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。