我知道,标准Java仍然没有提供一种标准的方法来将文件放入电子邮件回收站/回收站,而不是永久删除它们。但值得庆幸的是,有WIndows和OSX ( com.apple.eio.FileManager)的解决方案。
但是,对于Linux来说,是如何在Linux上实现回收站的,这仅仅是一个标准目录,我可以将文件移动到其中吗?
发布于 2013-11-27 23:33:34
两个最常见的Linux环境(KDE,Gnome)使用freedesktop.org垃圾规范。对于最常见的情况,这由$XDG_DATA_HOME/Trash下的目录结构组成。如果环境变量未设置或为空,则使用$HOME/.local/share。
这个目录下有两个目录:files和info。文件包含被破坏的文件,而info包含一个桌面样式的文件,它给出了垃圾文件的信息,比如它的原始名称和位置。请注意,files/中的文件不必包含文件的原始名称(例如,在文件名冲突的情况下)。在info目录中有一个匹配的.trashinfo文件,它的basename 必须与files/中的条目匹配,因此,例如,files/中的foo文件在info/中有一个对应的foo.trashinfo。
.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)>它必须必须有这些行,否则它是错误的。
规范中有一条注释指出:
当破坏文件或目录时,实现必须首先在$ file /info中创建相应的文件。当破坏文件或目录时,实现必须首先在$ file /info中创建响应文件。此外,它必须以原子的方式尝试这样做,以便如果两个进程尝试使用相同文件名的回收站文件,这将导致两个不同的垃圾文件。在Unix行系统上,这是通过生成一个文件名,然后用O_EXCL打开来完成的.如果成功,则创建是原子的(至少在同一台机器上),如果失败,则需要选择另一个文件名。
所以你必须以这种方式执行垃圾操作。
在Java中,这似乎是一个相对简单的练习,因此,一旦您了解了它是如何完成的,那么就使用它吧!
在kde中,还有kfmclient工具,可以这样使用:
kfmclient move <file> trash:/为你做这份工作。不过,我不知道侏儒有类似的东西。
发布于 2013-11-27 22:36:51
Linux中的垃圾文件夹位于/home/username/.local/share/Trash。尝试将文件移动到该文件夹。
发布于 2013-11-27 23:06:27
您可以使用libtrash,很可能来自包管理器。
如果配置正确,它将向所有程序和命令添加回收站功能。
https://stackoverflow.com/questions/20254403
复制相似问题