使用copyItemAtPath复制目录?

时间:2009-12-08 15:24:11

标签: objective-c

我正在尝试将目录“DATA_001”(及其内容)复制到目录“CRYO”中。我的印象是我可以使用copyItemAtPath这样做,就像我对文件一样吗?这是错误的做法吗?

NSString *sourceDir = @"/Users/Fuzzygoat/Documents/DATA_001";
NSString *destDir   = @"/Users/Fuzzygoat/Documents/CRYO";
NSString *sourceFile = @"/Users/Fuzzygoat/Documents/DATA_001/caroline.png";
NSString *destFile   = @"/Users/Fuzzygoat/Documents/CRYO/cjg.png";

// COPY DIR
success = [fileManager copyItemAtPath:sourceDir toPath:destDir error:&dError];
if(success != YES) NSLog(@"Error");

// COPY FILE
success = [fileManager copyItemAtPath:sourceFile toPath:destFile error:&fError];
if(success != YES) NSLog(@"Error");

加里

1 个答案:

答案 0 :(得分:9)

如果复制目录,所有内容都以递归方式复制,这意味着您对复制的第二次调用完全是多余的,您可以这样做:

NSString *sourceDir = @"/Users/Fuzzygoat/Documents/DATA_001";
NSString *destDir   = @"/Users/Fuzzygoat/Documents/CRYO";

// COPY DIR
success = [fileManager copyItemAtPath:sourceDir toPath:destDir error:&dError];
if(success != YES) NSLog(@"Error: %@", dError);

显然,如果您不想复制目录中的所有内容,则不应复制目录本身,而只是复制所需的条目。

我应该注意,您没有说明您遇到任何特殊问题。显然有很多原因导致这种事情失败(权限,问题等),这应该由dError的值表示。如果你问这个问题是因为你得到了意想不到的结果,你需要提供更多有关正在发生的事情以及它与你的期望有何不同的细节。