2012-03-03 91 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