目标c无法将文件写入目录权限问题

时间:2016-08-19 11:29:44

标签: objective-c nsfilemanager

我需要在应用程序创建的目录中保存一些图像,这是创建目录和设置完全权限的代码

NSFileManager* manager = [NSFileManager defaultManager];
SnapDir = [AssetPath stringByAppendingPathComponent:@"ScreenCaptures"];
if (![manager fileExistsAtPath:AssetWatchSnapDir isDirectory:&isDirectory] || !isDirectory)
{
    NSError *error = nil;

    [manager createDirectoryAtPath:SnapDir
                 withIntermediateDirectories:NO
                 attributes:nil
                 error:&error];
    if (error)
        NSLog(@"Error creating directory snap path: %@", [error localizedDescription]);
    else {
        NSError *error1;
        [manager setAttributes:@{ NSFilePosixPermissions : @0777 }
                     ofItemAtPath:SnapDir error:&error1];
    }
}

[[NSUserDefaults standardUserDefaults] setObject:SnapDir forKey:@"AssetSnap"];

现在我保存了像png一样的图像,

SnapDir = [[NSUserDefaults standardUserDefaults] objectForKey:@"AssetSnap"];  
NSString* filepath = [SnapDir stringByAppendingPathComponent:filename];
NSError *error;
bool success = [pngRep writeToFile:filepath options:0 error:&error];
if (!success) {
    NSLog(@"writeToFile failed with error %@", error);
}

如果图像保存发生在创建目录的app运行的同一个实例中,则此方法可以正常工作。那就是我打开应用程序,由应用程序创建目录然后保存。

当关闭应用程序并再次打开并尝试保存图像(使用NSUserDefaults中存储的目标路径)时,会出现以下关于权限问题的错误。

Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “2016_08_19_06_32_00.png” in the folder “ScreenCaptures”." UserInfo={NSFilePath=/Users/development/Documents/d/ScreenCaptures/

1 个答案:

答案 0 :(得分:1)

尝试:

String target = ".";
String someString = "123.456";
String[] someStringSplit = someString.split(target); // someStringSplit is an empty array

 [manager createDirectoryAtPath:SnapDir.path
                  withIntermediateDirectories:NO
                                   attributes:nil
                                        error:&error];

我没有测试此代码