如何确定卷是否支持垃圾箱?

时间:2013-08-28 04:33:30

标签: macos cocoa

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

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

这里的目的是做一些像(伪代码):

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

我知道 recycleURLs:completionHandler:但是,例如,对于SMB卷,它会显示一个关于如何立即删除文件的对话框。我想单独处理这些文件,以便我可以更新显示。我想我可以使用 recycleURLs:completionHandler:,如果文件系统事件在SMB卷上工作,但我不确定是否这样做。

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

1 个答案:

答案 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中的代码,表示无法执行   请求的操作,因为该功能也不受支持   因为文件系统缺少功能,或者需要库   遗失或其他类似的原因。

不确定为什么该文档永远不会出现在搜索上。