访问使用iTunes传输的“私人文档”文件夹中的文件

时间:2010-10-12 17:56:20

标签: iphone objective-c cocoa-touch ios filesystems

目前我正在尝试使用3.2引入的新iOS功能访问传输的文件。

- (NSString *)getPrivateDocsDir {

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    documentsDirectory = [documentsDirectory stringByAppendingPathComponent:@"Private Documents"];

    NSError *error;
    [[NSFileManager defaultManager] createDirectoryAtPath:documentsDirectory withIntermediateDirectories:YES attributes:nil error:&error];   

    return documentsDirectory;

}


 // and then in a method
 NSString *documentsDirectory = [self getPrivateDocsDir];
 NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:&error];

问题是,这在模拟器中工作正常,但在我的iphone上,files数组是空的。

如何直接访问此目录?

1 个答案:

答案 0 :(得分:2)

无法通过iTunes访问“图书馆目录”,“私人文档”位于此库目录中。 私人文件,顾名思义,是私人的。有意无法通过iTunes访问它们。

如果要访问文档目录(可通过iTunes访问),请替换此

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);

用这个:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

编辑: 访问这样的文件。

- (NSString *)documentsDirectory {
    return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
}

NSString *documentsDirectory = [self documentsDirectory];
NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:&error];