如何使用cocoa将文件复制到便携式驱动器根目录?

时间:2010-09-03 20:33:19

标签: cocoa file-copying

我尝试了以下

[[NSFileManager defaultManager] copyItemAtPath:@"whatever.txt"
 toPath:@"/Volumes/MyDrive" error:&copyError];

这给了我错误“操作无法完成。文件存在”

如果我尝试将其复制到“/ Volumes / MyDrive / testFolder”,那么一切都复制到testFolder就好了。

2 个答案:

答案 0 :(得分:5)

  

我尝试了以下

[[NSFileManager defaultManager] copyItemAtPath:@"whatever.txt"
 toPath:@"/Volumes/MyDrive" error:&copyError];
     

这给了我错误“操作无法完成。文件存在”

首先,正如KennyTM已经告诉过你的那样,错误消息告诉你一个可能的问题原因:文件已经存在。目的地不得存在;您必须删除它或为目的地指定其他名称。

其次,还有另一个可能的问题原因:您只指定了目标文件夹,而不是完整的目标路径。您必须指定完整的目标路径,包括目标文件名。说明文件:

“复制文件时,目标路径必须以文件名结尾 - 没有隐式采用源文件名。”

如果您希望副本的路径名为/Volumes/MyDrive/whatever.txt,那就是您需要传递的路径名。

另外,在尝试查看错误对象之前,不要忘记检查复制是否成功。如果复制失败,您应该只查看错误对象。

  

如果我尝试将其复制到“/ Volumes / MyDrive / testFolder”,那么复制到testFolder就好了。

我认为你会发现testFolder实际上是文件专用的,它是whatever.txt的副本。

答案 1 :(得分:3)

错误不是很清楚吗? “操作无法完成。文件存在”。 -copyItemAtPath:…的文件指出:

  

srcPath 中指定的文件必须存在,而操作前 dstPath 必须不存在

如果要覆盖目标文件,则需要调用-removeItemAtPath:error:来删除目标文件。