2010-10-12 43 views
2

当前我试图访问使用3.2中引入的新iOS功能传输的文件。访问使用iTunes传输的“私人文档”文件夹中的文件

- (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数组为空。

任何想法如何直接访问此目录?

回答

2

Library-Directory无法通过iTunes访问,而“Private Documents”位于此库目录内。 私人文件,顾名思义,是私人的。他们故意无法通过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]; 
+0

如果不在私人文件中,那么存储的传输文件在哪里呢? http://cl.ly/bfe32afa6e272ebc5d70 – choise 2010-10-12 18:37:51

+0

他们在文档目录中。无论你从哪里得到私人东西,它都被用于完全不同的事情。 – 2010-10-12 18:41:40

+0

感谢这工作很好。是一个教程,不知道。 – choise 2010-10-12 18:46:40