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

abi*_*son 15 nsfilemanager ios ios6

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

        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);
Run Code Online (Sandbox Code Playgroud)

现在,没有任何内容被打印出来,我无法在模拟器中看到该文件.是否因为尚未创建Documents主文件夹中的"newfolder"文件夹.如果是这样,有没有办法创建它,如果它还没有?

谢谢!

rma*_*ddy 28

是的,您必须确保首先创建该文件夹.使用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)];
Run Code Online (Sandbox Code Playgroud)

您应该检查这些方法的返回值并处理任何故障.