Как отменить переход к мусорной операции в Java? - PullRequest
0 голосов
/ 10 мая 2019

Существует вызов java.awt.Desktop.getDesktop().moveToTrash(FILE), который перемещает файл в корзину.

Когда файл находится в корзине, как можно было бы вернуть файл в исходное местоположение с помощью Java?

1 Ответ

0 голосов
/ 11 мая 2019

Помните, что в некоторых ОС практически невозможно восстановить удаленный файл.

Когда вы говорите о файловых системах Windows, то с помощью некоторого кода JNI вы можете получить доступ к файловой системе и сбросить флаг удаления.

Очевидно, что если ваша программа удаляет файлы, вы можете переместить их в папку bin, из которой вы можете восстановить при необходимости.

Другим вариантом может быть написание некоторого сервиса, который отслеживает активность файловой системы и может копировать файлы в корзину для последующего восстановления. Читайте о jnotify .

По разным причинам в Windows отсутствует концепция папки, которая просто соответствует корзине.

Пожалуйста, обратитесь к https://bugs.java.com/bugdatabase/view_bug.do?bug_id=5080625

Правильный способ - использовать JNI для вызова Windows SHFileOperation API, устанавливая флаг FO_DELETE в структуре SHFILEOPSTRUCT.

...