2009-12-08 99 views
2

我想将目录“DATA_001”(及其内容)复制到目录“CRYO”中。我的印象是,我可以使用copyItemAtPath来像这样做一个文件吗?这是做错了吗?使用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"); 

加里

回答

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的值来表示。如果你问这个问题是因为你已经收到意想不到的结果,那么你需要包含更多关于正在发生的事情以及它与预期不同的细节。

+0

谢谢路易,copy_Dir和copy_File只是为了测试,所以这就是为什么我包括这两个。我的印象是我的代码错了,你的答案似乎并非如此。我会回去看看。非常感谢。 – fuzzygoat 2009-12-08 16:11:01

+0

它实际上是飞行员的错误,或者说我是一个混蛋。我所做的是创建“CRYO”目录,认为它将复制文件。dError确实是关键,因为它说“文件已存在”......再次感谢并遗憾浪费时间。 – fuzzygoat 2009-12-08 16:19:00

+0

对于noobs,您可能需要修改此操作,以便使用'[NSFileManager defaultManager]'修改'fileManager'。 – Volomike 2016-05-16 19:26:56