2013-11-27 4 views
0

Я знаю, что стандартная Java по-прежнему не предоставляет стандартный способ поместить файлы в корзину/мусор, вместо того чтобы их постоянно удалять. Но, к счастью, есть решения для WIndows (jna) и OSX (com.apple.eio.FileManager).Могу ли я поместить файлы в LInux Trash с Java

Но есть ли что-нибудь для Linux Dekstop, как это происходит в Linux, это стандартный каталог, в который я мог бы перемещать файлы?

ответ

2

В двух наиболее распространенных средах рабочего стола Linux (KDE, Gnome) используется freedesktop.org trash specification. Для наиболее распространенного случая это состоит из структуры каталога под $XDG_DATA_HOME/Trash. если переменная окружения не установлена ​​или пуста, то используется $HOME/.local/share.

Существует два каталога под этим: files и info. файлы содержат файлы с разбивкой, в то время как информация содержит файл в стиле рабочего стола, который предоставляет информацию об поврежденном файле, таком как его оригинальное имя и местоположение. Обратите внимание, что файл в files/ не должен содержать исходное имя файла (например, в случае конфликтов имен файлов). Существует паросочетание .trashinfo файла в информационном каталоге, кто должен базовое имя соответствующей записи в files/, так, например, файл с именем foo в files/ бы в 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. Более того, он ДОЛЖЕН попробовать сделать это в атомном режиме, так что если два процесса попробуют файлы мусора с тем же именем файла, это приведет к двум различным файлам мусора. В системах Unix-линий это делается путем создания имени файла, а затем открытия с помощью O_EXCL. Если это удастся, создание было атомарным (по крайней мере, на том же компьютере), если он сбой, вам нужно выбрать другое имя файла.

Таким образом, вам необходимо выполнить операцию сортировки таким образом.

Это похоже на относительно простое упражнение на Java, поэтому, как только вы поймете, как это делается, имейте это!

В KDE есть также инструмент CLI kfmclient, который может быть использован как так:

kfmclient move <file> trash:/ 

, который делает работу за вас. Тем не менее, я не знаю об эквиваленте гномов.

+0

Хорошо, звучит разумно, удивлен, что он еще не был зафарпифицирован в какую-то java. –

2

Папка для мусора в Linux находится по адресу /home/username/.local/share/Trash. Попробуйте переместить файлы в эту папку.

+0

Звучит многообещающе –

0

Вы можете использовать libtrash, скорее всего, от вашего менеджера пакетов.

При правильной настройке он добавляет функциональность корзины ко всем программам и командам.

+0

Я ищу Java-решение –

Смежные вопросы