ios - 在使用包含新文件夹的路径调用 writeToFile 之前,我们是否需要在 Documents 中创建子文件夹?

标签 ios ios6 nsfilemanager

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

        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);

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

谢谢!

最佳答案

是的,您必须先创建文件夹。使用 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)];

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

关于ios - 在使用包含新文件夹的路径调用 writeToFile 之前,我们是否需要在 Documents 中创建子文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13634424/

相关文章:

带有 UISlider 的 iOS7 自定义 setMaximumTrack 图像不显示在设备上

ios6 - initWithAppID 不使用原生 Facebook 登录与 iOS SDK 3.1.1

ios - presentViewController 显示黑页

ios - 在 iCloud 中使用预先存在的 NSFileManager 代码

ios - 应用程序可以在模拟器上运行,但不能在设备上运行。Https Web 服务问题

ios - resignFirstResponder 与 endEditing 键盘关闭

objective-c - iOS 6 旋转问题 - 呈现模态视图 Controller 没有旋转

macos - 如何在 Cocoa 应用程序中显示文件列表?

ios - 从文档目录 ios 按文件名获取文件路径

ios - 如何从base64string的服务器下载pdf文件?