2013-01-25 63 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