5

我正在编写一个将删除文件的应用程序。如果卷支持垃圾文件夹,我想将文件移到那里,否则只需删除它们。

这可能只是我的搜索魔力让我失望,但我找不到如何做到这一点。

这里的意图是做类似(伪代码)的事情:

if (itemURL on volume that supports Trash)
    use trashItemAtURL:resultingItemURL:error:
else
    use removeItemAtURL:error:

我知道recycleURLs:completionHandler:但是,例如,对于 SMB 卷,它会弹出一个关于如何立即删除文件的对话框。我想单独处理这些文件,以便我可以更新显示。我想我可以使用recycleURLs:completionHandler: if File System Events 在 SMB 卷上工作,但我不确定它们是否有效。

Anyhoo..是否有一些我遗漏的 API 或一些我似乎无法找到的推荐技术?

4

1 回答 1

4

Apple Dev Forums 的一位好人找到了答案:

来自 10.8 Foundation 发行说明:

NSFileManager Trash API 在 Mac OS 10.8 中,NSFileManager 具有管理 Trash 的新方法。-[NSFileManager tramItemAtURL:resultingItemURL:error:] 将尝试将给定 URL 处的项目移动到垃圾箱,并通过引用返回结果 URL。作为此操作的一部分,系统可能会重命名文件以避免名称冲突;如果是这样,resultingItemURL 将反映这个新名称。

[剪辑]

某些卷可能不支持垃圾文件夹,因此这些方法将通过返回 NO 或 nil 以及带有 NSFeatureUnsupportedError 的 NSError 来报告失败。NSFeatureUnsupportedError 是 NSCocoaErrorDomain 中的一个新错误代码,表示由于不支持该功能而无法执行请求的操作,或者是因为文件系统缺少该功能,或者缺少所需的库,或者其他类似原因。

不知道为什么该文档从未出现在搜索中。

于 2013-08-28T20:10:30.977 回答