在NSFileManager中将文件从一个位置复制到另一个位置时出错

时间:2013-07-14 05:16:41

标签: objective-c macos cocoa nsfilemanager

当我使用NSFileManager通过copyItemAtPath将一个文件(目录)从一个地方复制到另一个地方时,它给了我错误。

以下是代码:

 [[NSFileManager defaultManager]copyItemAtPath:@"/Users/name/Documents/localhost/websiteDesign/_Software/" toPath:@"/Volumes/NAME/" error:&handleError];
 NSLog(@"%@", [handleError description]);

这是错误:

 Error Domain=NSCocoaErrorDomain Code=516 "“_Software” couldn’t be copied to “Volumes”   because an item with the same name already exists." UserInfo=0x102842d00
 {NSSourceFilePathErrorKey=/Users/name/Documents/localhost/websiteDesign/_Software/, NSUserStringVariant=(Copy), NSDestinationFilePath=/Volumes/NAME/, NSFilePath=/Users/name/Documents/localhost/websiteDesign/_Software/, NSUnderlyingError=0x10283f8e0 "The operation couldn’t be completed. File exists"}

但是,当我将目标文件的名称@“/ Volumes / NAME /”更改为@“/ Volumes / aaa /”之类的其他内容时,错误将会消失。我不知道为什么。谢谢!!

1 个答案:

答案 0 :(得分:3)

您需要指定完整路径名,包括实际文件名。

Apple's documentation for copyItemAtPath:toPath:error:个州,对于“toPath:”参数:

  

放置srcPath副本的路径。 此路径必须   在新位置包含文件或目录的名称。这   参数不能为零。

您现在正在尝试用文件覆盖整个硬盘(卷)。