将文件发送到回收站是显而易见的搜索结果。我已经尝试了提供的包装器,但是当它被引入 Unity 时会出现错误,IntPtr 无法为初学者编译。我还导入了Microsoft.VisualBasic
,它是依赖System.Deployment
到我的项目中,并且正在成功调用
Debug.Log(Microsoft.VisualBasic.FileIO.FileSystem.FileExists(path + "\test.txt"));
Microsoft.VisualBasic.FileIO.FileSystem.DeleteFile(path + "\test.txt", UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin);
但它只是删除文件,不会进入回收站。Unity 在 C 盘上运行,项目也在 C 盘上运行。我尝试过文件和文件夹,并尝试过RecycleOption.DeletePermanently
,它确实可以使用调试识别文件和文件夹,但回收站中从未显示任何内容。
我找到了解决此问题的最简单方法,就是向项目添加一个回收站。
由于 Unity 支持的文件名和路径长度比"Windows 资源管理器"长,因此它不会将项目发送到回收站,因为回收站无法保存它们。
这是 Win32 API 限制。
如果最终在 Unity 回收站中有两个同名文件,请创建另一个回收站或子回收站。
不是一个方便的解决方案,但它有效!
我个人解决这个问题的方法是,我随时保留我的项目版本。然后,我可以返回到项目的任何先前版本。
将文件发送到回收站确实是要走的路。我发现很简单
using System;
在我尝试使用FileOperationAPIWrapper脚本时丢失了。从那以后,我一直使用它成功地将文件移动到回收站。