2013-01-25 58 views
2
- (NSURL *) applicationDocumentsDirectory 
{ 
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 
} 

....的NSFileManager不会创建文件夹

NSURL *folder = [[[Database sharedInstance] applicationDocumentsDirectory] URLByAppendingPathComponent:@"temp"]; 
BOOL isFolder; 
NSLog(@"URL: %@", folder); 
if ([[NSFileManager defaultManager] fileExistsAtPath:folder.absoluteString isDirectory:&isFolder] == NO) 
{ 
    NSLog(@"IsFolder: %d", isFolder); 
    [[NSFileManager defaultManager] createDirectoryAtURL:folder withIntermediateDirectories:YES attributes:nil error:&error]; 
    if (error) 
     NSLog(@"Error: %@", error.localizedDescription); 
} 

我运行这部分代码的两倍。

我期望该文件夹将被创建,但每次我收到一个日志:“IsFolder:7”。

为什么该文件夹在第一次运行后未创建?

+0

确保isFolder为真 – Dhara

+0

我已更改为:“BOOL isFolder = YES”。 fileExistsAtPath仍然返回NO ... – iWheelBuy

+0

尝试使用'... AtPath:'而不是'... AtURL:',它可能会帮助你。 – holex

回答

8

请更换folder.absoluteString到文件夹,您的问题通过SETP

1解决

后续SETP)获取文件夹

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

2)获取文件夹和文件夹名称

NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"MyFolder"]; 

3)检查是否存在或不存在

if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]){ 

    NSError* error; 
    if( [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]) 

     else 
     { 
      NSLog(@"[%@] ERROR: attempting to write create MyFolder directory", [self class]); 
      NSAssert(FALSE, @"Failed to create directory maybe out of disk space?"); 
     } 
+0

好的。我已经改变了中间目录:从YES到NO。在第二次运行中,我收到“操作无法完成,文件存在”。这意味着该文件已创建。我想知道为什么fileExistsAtPath每次都返回NO?! – iWheelBuy

+0

检查我的更新答案 – Deepesh

8

问题出在folder.absoluteString

改为应该是folder.path