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