簡體   English   中英

我可以使用Java將文件放入LInux廢紙rash嗎

[英]Can I put files into LInux Trash with Java

我知道標准Java仍然沒有提供將文件放入ecycle bin / trash(而不是永久刪除文件)的標准方法。 但值得慶幸的是,有針對Windows(jna)和OSX(com.apple.eio.FileManager)的解決方案。

但是,Linux Dekstop有什么用嗎,Linux上如何實現回收站?它只是我可以將文件移至的標准目錄嗎?

Linux中的回收站文件夾位於/home/username/.local/share/Trash 嘗試將文件移動到該文件夾​​。

兩種最常見的Linux桌面環境(KDE,Gnome)使用freedesktop.org垃圾箱規范 在最常見的情況下,它由$XDG_DATA_HOME/Trash下的目錄結構組成。 如果環境變量未設置或為空,則使用$HOME/.local/share

該目錄下有兩個目錄: filesinfo 文件包含已刪除的文件,而信息則包含桌面樣式的文件,該文件提供已刪除文件的信息,例如原始名稱和位置。 請注意, files/中的files/不必包含文件的原始名稱(例如,在文件名沖突的情況下)。 info目錄中有一個匹配的.trashinfo文件,其基本名稱必須files/中的條目匹配,例如,在files/一個名為foofiles/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)>

必須有這些行,否則格式不正確。

規范中的注釋指出:

當垃圾文件或目錄時,實現必須首先在$ trash / info中創建相應的文件。 當垃圾文件或目錄時,實現必須首先在$ trash / info中創建相應的文件。 此外,它必須嘗試以原子方式執行此操作,以便如果兩個進程嘗試使用相同文件名的垃圾文件,則將導致兩個不同的垃圾文件。 在Unix行系統上,這是通過生成文件名,然后使用O_EXCL打開來完成的。 如果成功,則創建是原子的(至少在同一台計算機上),如果創建失敗,則需要選擇另一個文件名。

因此,您必須以這種方式執行垃圾回收操作。

在Java中,這似乎是一個相對簡單的練習,因此,一旦您了解它是如何完成的,就來做吧!

在kde中,還可以使用kfmclient CLI工具,如下所示:

kfmclient move <file> trash:/

哪個可以為您完成工作。 不過,我不知道有什么侏儒。

您可以使用libtrash ,它很可能可以從軟件包管理器中獲得。

正確配置后,它將為所有程序和命令添加回收站功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM