【问题标题】:NSFileManager -copyItemAtPath:toPath:error: fails with read-only folderNSFileManager -copyItemAtPath:toPath:error: 只读文件夹失败
【发布时间】:2011-05-18 03:11:18
【问题描述】:

我正在尝试将只读但其中包含文件的文件夹复制到另一个位置。当我使用 -copyItemAtPath:toPath:error: 它复制文件夹,但不复制文件。演示错误的示例代码如下。
在这种情况下,不能在复制之前更改文件夹的权限。
谁能给个建议?

错误是:
Error Domain=NSPOSIXErrorDomain Code=13 UserInfo=0x1001102a0“操作无法完成。权限被拒绝”

错误的用户信息是:{
NSDestinationFilePath = "/Users/xxxxxxx/Desktop/readonlyfilecopy/testdir/Abbey Road.jpg";
NSFilePath = "/Users/xxxxxxx/Desktop/testdir/Abbey Road.jpg";
NSUserStringVariant = 复制;
}

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    NSString* src = @"/Users/xxxxxxx/Desktop/testdir";
    NSString* target = @"/Users/xxxxxxx/Desktop/readonlyfilecopy/testdir";
    NSError* error = nil;

    [[NSFileManager defaultManager] copyItemAtPath:src toPath:target error:&error];

    if (error) {
        NSLog(@"%@", error);
        NSLog(@"%@", [error userInfo]);
    }

    [pool drain];
    return 0;
}

【问题讨论】:

  • 你说的只读,是指r-x还是r--权限?
  • 它在 Finder Get Info 中报告“只读”,并使用 ls -l 报告 r-xr-xr-x。我通过将几个文件复制到一个新文件夹、获取信息并将所有权限设置为只读来创建该文件夹。

标签: cocoa permissions copy nsfilemanager


【解决方案1】:

您确定可以读取文件夹中的每个文件吗?如果是这样,那么这实际上可能是一个 Cocoa 错误。它完全有可能创建一个新文件夹,将其设置为只读,然后尝试将文件复制到该文件夹​​中。如果你能在一个小的测试用例中重现这个,你应该submit a bug 给苹果。

【讨论】:

  • 是的,我确信我可以读取文件夹中的每个文件。我将提交一个错误。谢谢。
猜你喜欢
  • 2012-06-15
  • 1970-01-01
  • 2013-01-13
  • 1970-01-01
  • 2011-06-29
  • 2012-10-06
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
相关资源
最近更新 更多