Documents文件夹路径中的十六进制部分是什么?

时间:2014-10-10 18:24:55

标签: ios objective-c nsfilemanager

我的应用程序Documents文件夹中有一个文件。应用程序终止后,我会在AppDelegate的applicationWillTerminate方法中保存文件的网址:

// archiver init code
[archiver encodeObject:file.URL forKey:kFileURL];
// finish encoding and write data to file system

但是当尝试在下一个应用程序启动时恢复文件时,文件管理器无法找到该文件:调用后

NSURL *fileURL = [unarchiver decodeObjectForKey:kFileURL];
NSString *filePath = fileURL.path;

方法

[[NSFileManager defaultManager] fileExists:filePath];

返回NO

我试图找到原因,我发现每个应用启动时Documents文件夹的路径都会发生变化。更改的部分是中间的十六进制文件夹。以下是两个例子:

/private/var/mobile/Applications/04083A4A-87AC-4E3C-8BA1-F002B97AE304/Documents/...
/private/var/mobile/Applications/65D136BA-42C3-887A-B947-7FE396978153/Documents/...

我一直认为十六进制部分是每种应用程序独有的某种ID。但随着它的变化:这个数字究竟是什么? 在终止并重新启动我的应用程序后,如何重新定位文件?

1 个答案:

答案 0 :(得分:2)

您应该只获取文档文件夹的目录,然后加载文件。

+ (NSString *)documentDataPath
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    if ([paths count] == 0) {
        return nil;
    }
    NSString *directory = [paths objectAtIndex:0];
    if (directory == nil) {
        NSLog(@"NSDocumentDirectory not found!");
    }
    return directory;
}