我可以用Java将文件放入LInux垃圾箱吗

我可以用Java将文件放入LInux垃圾箱吗,java,linux,recycle-bin,Java,Linux,Recycle Bin,我知道标准Java仍然没有提供一种标准的方法来将文件放入ecycle bin/trash,而不是永久删除它们。但幸运的是,有针对WIndows(jna)和OSX(com.apple.eio.FileManager)的解决方案 但是Linux Dekstop有什么功能吗?回收站是如何在Linux上实现的?它只是我可以将文件移动到的标准目录吗?Linux中的垃圾文件夹位于/home/username/.local/share/trash。尝试将文件移动到该文件夹。Linux中的垃圾箱文件夹位于/ho

我知道标准Java仍然没有提供一种标准的方法来将文件放入ecycle bin/trash,而不是永久删除它们。但幸运的是,有针对WIndows(jna)和OSX(com.apple.eio.FileManager)的解决方案


但是Linux Dekstop有什么功能吗?回收站是如何在Linux上实现的?它只是我可以将文件移动到的标准目录吗?

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

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

您可以使用
libtrash
,最有可能从软件包管理器获得


正确配置后,它会将回收站功能添加到所有程序和命令中

您可以使用
libtrash
,最有可能从包管理器获得


正确配置后,它会将回收站功能添加到所有程序和命令中

两个最常见的Linux桌面环境(KDE、Gnome)使用。对于最常见的情况,它由
$XDG\u DATA\u HOME/Trash
下的目录结构组成。如果环境变量未设置或为空,则使用
$HOME/.local/share

此目录下有两个目录:
文件
信息
。“文件”包含被丢弃的文件,而“信息”包含一个桌面样式的文件,该文件提供有关被丢弃文件的信息,例如文件的原始名称和位置。请注意,
files/
中的文件不必包含文件的原始名称(例如,在文件名冲突的情况下)。info目录中有一个匹配的
.trashinfo
文件,其basename必须与
文件/
中的条目相匹配,因此,例如
文件/
中名为
foo
的文件将在
信息/
中具有相应的
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)>
[垃圾信息]
路径=
删除日期=
必须有这些行,否则格式不正确

规范中的注释说明:

销毁文件或目录时,实现必须首先在$trash/info中创建相应的文件。销毁文件或目录时,实现必须首先在$trash/info中创建相应的文件。此外,它必须尝试以原子方式执行此操作,这样,如果两个进程尝试使用相同文件名的垃圾文件,将导致两个不同的垃圾文件。在Unix联机系统上,这是通过生成一个文件名,然后用O_EXCL打开来完成的。如果成功,则创建是原子的(至少在同一台计算机上),如果失败,则需要选择另一个文件名

因此,您必须以这种方式执行垃圾清理操作

这在Java中似乎是一个相对简单的练习,所以一旦您了解了它是如何完成的,就开始吧

在kde中,还有kfmclient CLI工具,可以这样使用:

kfmclient move <file> trash:/
kfmclient移动垃圾桶:/

这是你的工作。不过,我不知道有哪种gnome是等效的。

两种最常见的Linux桌面环境(KDE、gnome)使用。对于最常见的情况,它由
$XDG\u DATA\u HOME/Trash
下的目录结构组成。如果环境变量未设置或为空,则使用
$HOME/.local/share

此目录下有两个目录:
文件
信息
。“文件”包含被丢弃的文件,而“信息”包含一个桌面样式的文件,该文件提供有关被丢弃文件的信息,例如文件的原始名称和位置。请注意,
files/
中的文件不必包含文件的原始名称(例如,在文件名冲突的情况下)。info目录中有一个匹配的
.trashinfo
文件,其basename必须与
文件/
中的条目相匹配,因此,例如
文件/
中名为
foo
的文件将在
信息/
中具有相应的
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)>
[垃圾信息]
路径=
删除日期=
必须有这些行,否则格式不正确

规范中的注释说明:

销毁文件或目录时,实现必须首先在$trash/info中创建相应的文件。销毁文件或目录时,实现必须首先在$trash/info中创建相应的文件。此外,它必须尝试以原子方式执行此操作,这样,如果两个进程尝试使用相同文件名的垃圾文件,将导致两个不同的垃圾文件。在Unix联机系统上,这是通过生成一个文件名,然后用O_EXCL打开来完成的。如果成功,则创建是原子的(至少在同一台计算机上),如果失败,则需要选择另一个文件名

因此,您必须以这种方式执行垃圾清理操作

这在Java中似乎是一个相对简单的练习,所以一旦您了解了它是如何完成的,就开始吧

在kde中,还有kfmclient CLI工具,可以这样使用:

kfmclient move <file> trash:/
kfmclient移动垃圾桶:/

这是你的工作。不过,我不知道gnome的等价物。

我在寻找Java解决方案我在寻找Java解决方案Kay,听起来很合理,很惊讶它还没有被封装到一些Java中。好吧,听起来很合理,很惊讶它还没有被封装到一些Java中。