두 가지 가장 일반적인 Linux 데스크탑 환경 (KDE, Gnome)은 freedesktop.org trash specification을 사용합니다. 가장 일반적인 경우에는 $XDG_DATA_HOME/Trash
아래의 디렉토리 구조로 구성됩니다. 환경 변수가 설정되어 있지 않거나 비어 있으면 $HOME/.local/share
이 사용됩니다.
files
과 info
아래에는 두 개의 디렉토리가 있습니다. 파일에는 휴지통 파일이 포함되어 있으며 info에는 원래 이름 및 위치와 같이 휴지통 파일에 대한 정보를 제공하는 데스크톱 스타일의 파일이 들어 있습니다. files/
의 파일에 파일 이름이 포함되어 있지 않아도됩니다 (예 : 파일 이름 충돌의 경우). 예를 들어 파일이 info/
에 해당 foo.trashinfo
있을 것 files/
에 foo
라고 있도록, files/
의 항목과 일치해야합니다 기본 이름 년대 정보 디렉토리에 일치 .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에 먼저 만들어야합니다. 또한, 반드시 원자 적 방식으로 시도해야합니다. 따라서 두 프로세스가 동일한 파일 이름을 가진 휴지통 파일을 시도하면 두 개의 다른 휴지통 파일이 생성됩니다. 유닉스 계열 시스템에서는 파일 이름을 생성 한 다음 O_EXCL로 열면된다. 이 작업이 성공하면 원자 (적어도 같은 시스템에 있음)가 실패하면 다른 파일 이름을 선택해야합니다.
그런 식으로 쓰레기 수거 작업을 수행해야합니다.
이것은 Java에서 상대적으로 간단한 연습처럼 보이므로 일단 어떻게 완료되었는지 이해하면 끝내야합니다! 당신을 위해 일을
kfmclient move <file> trash:/
:
는 KDE도 너무처럼 사용할 수 있습니다 kfmclient의 CLI 도구가있다. 그래도 GNOME에 상응하는 것을 알지 못합니다.
좋아, 합리적으로 놀랍지 만 이미 어떤 자바에 이미 익숙해 져있다. –