5

是否可以以编程方式恢复放入垃圾箱的项目?我想在我的应用程序中有一个“移至垃圾箱”按钮,但我希​​望能够在不保留我自己的副本的情况下撤消它。能够撤消移动到垃圾箱是不合适的,还是应该是永久性操作?

4

1 回答 1

5

上次我检查时,放回功能完全是 Finder 特定的。也就是说,以编程方式将文件移动到垃圾箱甚至不允许 Finder 将其放回。只有被 Finder 丢弃的项目才能被 Finder 放回。(即使将项目从 Dock 上的文件夹拖到垃圾箱也不允许将其放回,因为 Dock 将其删除,而不是 Finder。)

即使对于 Finder 可以放回的项目,也没有记录的方式以编程方式进行放回操作。

但是,对于您自己的应用程序,您当然可以撤消操作,而无需保留文件的单独副本(直到用户清空垃圾箱)。-[NSWorkspace recycleURLs:completionHandler:]将为您提供垃圾箱中项目的 URL。存储这些 URL 和原始包含文件夹的书签数据,以及原始名称。要撤消,请解析垃圾箱和原始包含文件夹中的项目的书签数据,并将前者移动到具有原始名称的后者 - 除非确保不要破坏已在其位置创建的任何新文件。如果没有破坏就无法完成移动,请尝试在文件名中添加后缀号。继续递增,直到找到未使用的名称。

如果解析书签数据失败,则操作无法完成,您应该让用户知道。

于 2013-09-09T22:10:44.780 回答