17

我正在尝试写入以下路径:

        NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
        NSString *storePath = [docDir stringByAppendingPathComponent:@"/newfolder/test.jpg"];

        NSData *data = [NSData dataWithData:UIImagePNGRepresentation(image)];
        BOOL saved = [data writeToFile:storePath atomically:NO];
        NSLog(@"%c", saved);

现在,什么都没有打印出来,我在模拟器中看不到文件。是不是因为尚未创建 Documents 主文件夹中的“newfolder”文件夹。如果是这样,如果它还没有,有没有办法创建它?

谢谢!

4

1 回答 1

31

是的,您必须确保先创建文件夹。使用NSFileManager createDirectoryAtPath:withIntermediateDirectories:attributes:error:传递到您要创建的文件夹的路径(而不是您尝试写入的文件)。

NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *storePath = [docDir stringByAppendingPathComponent:@"newfolder/test.jpg"];

[[NSFileManager defaultManager] createDirectoryAtPath:[storePath stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:nil];

NSData *data = [NSData dataWithData:UIImagePNGRepresentation(image)];

您应该检查这些方法的返回值并处理任何失败。

于 2012-11-29T20:47:49.000 回答