我正在编写一个删除文件的应用程序。如果卷支持“废纸篓”文件夹,我想将文件移动到那里,否则只需删除它们。
可能只是我的搜索mojo让我失望,但我找不到如何做到这一点。
这里的目的是做一些像(伪代码):
if (itemURL on volume that supports Trash)
use trashItemAtURL:resultingItemURL:error:
else
use removeItemAtURL:error:
我知道 recycleURLs:completionHandler:但是,例如,对于SMB卷,它会显示一个关于如何立即删除文件的对话框。我想单独处理这些文件,以便我可以更新显示。我想我可以使用 recycleURLs:completionHandler:,如果文件系统事件在SMB卷上工作,但我不确定是否这样做。
Anyhoo ..是否有一些我缺少的API或一些我似乎无法找到的推荐技术?
答案 0 :(得分:4)
来自Apple Dev Forums的一个好人找到了答案:
From the 10.8 Foundation release notes:
NSFileManager Trash API在Mac OS 10.8中,NSFileManager有新方法 管理垃圾箱。 - [NSFileManager trashItemAtURL:resulItemURL:error:]将尝试移动项目 在垃圾箱的给定URL处,返回结果URL 参考。作为此操作的一部分,系统可以重命名该文件 避免名称冲突;如果是这样,resulItemURL将反映这一点 新名字。
[剪断]
某些卷可能不支持“废纸篓”文件夹,因此这些方法会 通过返回NO或nil和NSError报告失败 NSFeatureUnsupportedError。 NSFeatureUnsupportedError是一个新错误 NSCocoaErrorDomain中的代码,表示无法执行 请求的操作,因为该功能也不受支持 因为文件系统缺少功能,或者需要库 遗失或其他类似的原因。
不确定为什么该文档永远不会出现在搜索上。