【问题标题】:How to copy a file to portable drive root with cocoa?如何使用可可将文件复制到便携式驱动器根目录?
【发布时间】:2011-04-08 01:16:08
【问题描述】:

我尝试了以下方法

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

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

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

【问题讨论】:

    标签: cocoa file-copying


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      我尝试了以下方法

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

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

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

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

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

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

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

      如果我尝试将其复制到“/Volumes/MyDrive/testFolder”,所有内容都复制到 testFolder 就好了。

      我想你会发现testFolder 实际上是一个文件——具体来说,它是whatever.txt 的副本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-24
        • 2015-06-07
        • 1970-01-01
        相关资源
        最近更新 更多