告诉Finder以编程方式复制/移动

时间:2017-09-02 14:46:44

标签: cocoa copy move nsfilemanager finder

我有一个包含在不同文件夹和卷中的文件URL列表。我想告诉Finder在cocoa app中复制或移动它们。

它应该默认移动,但如果源和目标的卷不同,则使用copy。我想最终得到Finder显示其进度窗口。

有办法做到这一点吗?当我使用拖放时,我可以让它像这样复制,但这需要用户这样做。我希望用户在标准文件对话框表中选择目标文件夹,然后让它启动。

AppleScript似乎是一种混乱且容易出错的方式。

1 个答案:

答案 0 :(得分:0)

决定是否移动或复制取决于您的应用逻辑。要在Swift 4中移动文件,请执行以下操作:

do {
  try FileManager.default.moveItem(atPath: sourcePath, toPath: destinationPath)
  return nil
} catch let err {
  // Do something with the error
}

复制看起来几乎完全相同:

do {
  try FileManager.default.copyItem(atPath: sourcePath, toPath: destinationPath)
  return nil
} catch let err {
  // do something with error
}