是否可以通过编程方式恢复放入垃圾箱的项目?我想在我的应用程序中有一个“移动到垃圾箱”按钮,但我希望能够在不保留我自己的副本的情况下撤消它。能够撤消移动到垃圾箱,或者它应该是永久性操作是不合适的吗?
答案 0 :(得分:4)
上次检查时,“放回”功能完全取决于Finder。也就是说,以编程方式将文件移动到废纸篓甚至不允许Finder将其放回原处。只有Finder破坏的项目才能由Finder放回。 (甚至将一个项目从Dock上的文件夹拖到垃圾箱也不允许它被放回去,因为Dock将其删除,而不是Finder。)
即使对于Finder可以放回的项目,也没有记录的方式以编程方式执行“放回”操作。
但是,对于您自己的应用程序,您当然可以在不保留文件的单独副本的情况下撤消操作(直到用户清空垃圾箱)。 -[NSWorkspace recycleURLs:completionHandler:]
会为您提供垃圾箱中商品的网址。存储这些URL和原始包含文件夹的书签数据以及原始名称。要撤消,解析垃圾箱和原始包含文件夹中项目的书签数据,并使用原始名称将前者移动到后者 - 除了确保不破坏在其位置创建的任何新文件。如果在没有删除的情况下无法完成移动,请尝试在文件名中添加后缀编号。继续递增,直到找到未使用的名称。
如果解析书签数据失败,则操作无法完成,您应该让用户知道。