首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我能用Java把文件放进LInux垃圾吗?

问我能用Java把文件放进LInux垃圾吗?
EN

Stack Overflow用户
提问于 2013-11-27 22:35:50
回答 3查看 482关注 0票数 2

我知道,标准Java仍然没有提供一种标准的方法来将文件放入电子邮件回收站/回收站,而不是永久删除它们。但值得庆幸的是,有WIndows和OSX ( com.apple.eio.FileManager)的解决方案。

但是,对于Linux来说,是如何在Linux上实现回收站的,这仅仅是一个标准目录,我可以将文件移动到其中吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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文件的内容:

代码语言:javascript
复制
[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工具,可以这样使用:

代码语言:javascript
复制
kfmclient move <file> trash:/

为你做这份工作。不过,我不知道侏儒有类似的东西。

票数 2
EN

Stack Overflow用户

发布于 2013-11-27 22:36:51

Linux中的垃圾文件夹位于/home/username/.local/share/Trash。尝试将文件移动到该文件夹。

票数 2
EN

Stack Overflow用户

发布于 2013-11-27 23:06:27

您可以使用libtrash,很可能来自包管理器。

如果配置正确,它将向所有程序和命令添加回收站功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20254403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档