我知道标准Java仍然没有提供将文件放入ecycle bin / trash而不是永久删除它们的标准方法。但幸运的是,有针对WIndows(jna)和OSX(com.apple.eio.FileManager)的解决方案。
但是对于Linux Dekstop有什么用途,如何在Linux上实现回收站,它只是一个我可以将文件移动到的标准目录吗?
答案 0 :(得分:2)
Linux中的垃圾箱文件夹位于/home/username/.local/share/Trash
。尝试将文件移动到该文件夹。
答案 1 :(得分:2)
两个最常见的Linux桌面环境(KDE,Gnome)使用freedesktop.org trash specification。对于最常见的情况,这包括$XDG_DATA_HOME/Trash
下的目录结构。如果环境变量未设置或为空,则使用$HOME/.local/share
。
此目录下有两个目录:files
和info
。 files包含已删除的文件,而info包含一个桌面样式的文件,该文件提供有关已删除文件的信息,例如它的原始名称和位置。请注意,files/
中的文件不必包含文件的原始名称(例如,在文件名冲突的情况下)。 info目录中有一个匹配的.trashinfo
文件,其基本名称必须与files/
中的条目匹配,例如foo
中名为files/
的文件} foo.trashinfo
中会有相应的info/
。
.trashinfo
文件的内容:
[Trash Info]
Path=<original path to file e.g. foo/bar/baz.txt>
DeletionDate=<Date file was deleted in RFC3339 format (YYYYMMDDTHH:MM:SS)>
必须拥有这些行,否则会出现格式错误。
规范中的注释指出:
当废弃文件或目录时,实现必须首先在$ trash / info中创建相应的文件。在废弃文件或目录时,实现必须首先在$ trash / info中创建相应的文件。此外,它必须尝试以原子方式执行此操作,以便如果两个进程尝试具有相同文件名的垃圾文件,这将导致两个不同的垃圾文件。在Unix系统上,这是通过生成文件名,然后使用O_EXCL打开来完成的。如果成功,则创建是原子的(至少在同一台机器上),如果失败,则需要选择另一个文件名。
所以你必须以这种方式执行垃圾处理操作。
这似乎是一个相对简单的Java练习,所以一旦你理解了它是如何完成的,就去吧!
在kde中还有kfmclient CLI工具,可以这样使用:
kfmclient move <file> trash:/
为你做的工作。不过,我不知道一个gnome等价物。
答案 2 :(得分:0)
您可以使用libtrash
,最有可能来自您的软件包管理器。
如果配置正确,它会为所有程序和命令添加回收站功能。