2013-11-27 2 views
0

표준 Java가 파일을 영구히 삭제하는 대신 표준 bin/trash에 저장하는 표준 방법을 여전히 제공한다는 것을 알고 있습니다. 하지만 고맙게도 Windows (jna) 및 OSX (com.apple.eio.FileManager)에 대한 솔루션이 있습니다.Java로 LInux 휴지통에 파일을 넣을 수 있습니까

하지만 Linux 용 Dekstop에는 무엇이 있습니까? Linux에서 휴지통을 구현하는 방법은 파일을 이동할 수있는 표준 디렉토리입니까?

답변

2

두 가지 가장 일반적인 Linux 데스크탑 환경 (KDE, Gnome)은 freedesktop.org trash specification을 사용합니다. 가장 일반적인 경우에는 $XDG_DATA_HOME/Trash 아래의 디렉토리 구조로 구성됩니다. 환경 변수가 설정되어 있지 않거나 비어 있으면 $HOME/.local/share이 사용됩니다.

filesinfo 아래에는 두 개의 디렉토리가 있습니다. 파일에는 휴지통 파일이 포함되어 있으며 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에 상응하는 것을 알지 못합니다.

+0

좋아, 합리적으로 놀랍지 만 이미 어떤 자바에 이미 익숙해 져있다. –

2

Linux의 휴지통 폴더는 /home/username/.local/share/Trash입니다. 해당 폴더로 파일을 이동하십시오.

+0

유망한 소리 –

0

libtrash (대부분 패키지 관리자가 제공)을 사용할 수 있습니다.

제대로 구성되면 모든 프로그램과 명령에 휴지통 기능이 추가됩니다.

+0

나는 자바 솔루션을 찾고있다. –