2012-03-03 134 views
-1

我不確定爲什麼此代碼無法正常工作。它出現的目錄存在,但後來聲稱它不。目錄未創建

+(NSString *)writeImageToFile:(UIImage *)image { 
    NSLog(@"image 3: %@", image); 
    NSData *fullImageData = UIImageJPEGRepresentation(image, 1.0f); 

    NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Images/"]; 

    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    if (![fileManager fileExistsAtPath:path isDirectory:nil]) { 
     BOOL success = [fileManager createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:nil]; 
     NSLog(@"success 1: %i", success); 
    } 

    NSString *name = [NSString stringWithFormat:@"%@.jpg", [JEntry generateUuidString]]; 
    NSString *filePath = [path stringByAppendingPathComponent:name]; 
    NSLog(@"file path: %@", filePath); 
    NSError *error = nil; 
    BOOL success = [fullImageData writeToFile:filePath options:NSDataWritingAtomic error:&error]; 
    if (!success) { 
     NSLog(@"Failed to write to file with error: %@", [error description]); 
    } 
} 

我的NSLog:

image 3: <UIImage: 0x6972820> 
file path: /var/mobile/Applications/5E25F369-9E05-4345-A0A2-381EDB3321B8/Documents/Images/3323E0F5-0B13-4CBA-898A-252212C65E2F.jpg 
Failed to write to file with error: Error Domain=NSCocoaErrorDomain Code=512 "The operation couldn’t be completed. (Cocoa error 512.)" UserInfo=0x6987e20 {NSFilePath=/var/mobile/Applications/5E25F369-9E05-4345-A0A2-381EDB3321B8/Documents/Images/3323E0F5-0B13-4CBA-898A-252212C65E2F.jpg, NSUnderlyingError=0x6977290 "The operation couldn’t be completed. Not a directory"} 
+0

您是否嘗試過在目錄路徑中保存沒有圖像?你是否也想創建Images目錄? – Ravin 2012-03-03 15:49:27

+0

你可以發佈你用來創建目錄「圖片」的代碼嗎?另外,你可以發佈我在答案中發佈的代碼的結果嗎? – sch 2012-03-03 16:03:20

+0

嗨,你有解決你的問題嗎?「操作無法完成。不是目錄」請分享您的解決方案,如果可能的話..謝謝! – 2012-09-19 07:49:58

回答

1

正如我的回答你剛纔的問題,我會給你一些代碼,以幫助您調試這個問題。

嘗試改變:

if (![fileManager fileExistsAtPath:path isDirectory:nil]) { 
    BOOL success = [fileManager createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:nil]; 
    NSLog(@"success 1: %i", success); 
} 

到:

BOOL isDirectory = NO; 
BOOL directoryExists = [fileManager fileExistsAtPath:path isDirectory:&isDirectory]; 
if (directoryExists) { 
    NSLog(@"isDirectory: %d", isDirectory); 
} else { 
    NSError *error = nil; 
    BOOL success = [fileManager createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:&error]; 
    NSLog(@"success 1: %i", success); 
    if (!success) { 
     NSLog(@"Failed to create directory with error: %@", [error description]); 
    } 
} 

我的猜測是, 「圖像」 是不是一個目錄。

+0

你是對的,事實並非如此。我如何使它成爲一個目錄? – Andrew 2012-03-03 16:19:20

+0

你是在哪裏創建「圖片」的,你可以發佈該代碼嗎?這裏的代碼看起來是正確的,所以我想你在別的地方創建了它。 – sch 2012-03-03 16:22:57

+0

我沒有。我想在它嘗試寫入文件之前檢查圖像是否存在,如果不存在,它會創建它。 – Andrew 2012-03-03 16:26:17