문제

File.deleteOnexit ()가 JVM이 조기에 죽어도 파일이 삭제되었음을 보장합니까?

도움이 되었습니까?

해결책

삭제는 Java 언어 사양에 의해 정의 된대로 가상 머신의 정상 종료에 대해서만 시도됩니다.

아니요. 가능하면 다음 시작시 파일을 확인하십시오.

다른 팁

Tim Bender는 다음과 같이 지적합니다. File.deleteOnExit() 파일이 실제로 삭제되었다고 보장하지 않습니다.

그러나 Unixish 시스템 (예 : Linux 또는 OSX)에서는 임시 파일을 삭제할 수 있습니다. ~ 전에 그것에 글을 씁니다 (그러나 열린 후). 파일에 열린 디스크립터를 보관하는 한 파일이 더 이상 디렉토리 트리에 존재하지 않더라도 계속 읽고 글을 쓸 수 있으며 OS는 파일에 사용되는 공간을 자동으로 회수합니다. 프로그램이 종료되거나 마지막 디스크립터를 파일에 닫습니다).

파일 시스템 시맨틱이 다르고 열린 파일을 삭제할 수없는 Windows에서는 작동하지 않습니다. 그러나 휴대용 코드에서는 파일을 열 후 파일을 삭제 해보고 성공하지 못하면 다시 시작할 수 있습니다. deleteOnExit():

File tempFile = File.createTempFile("tempfile", ".tmp");
RandomAccessFile fh = new RandomAccessFile (tempFile, "rw");

// try to delete the file now, fall back to deletion on exit
if ( !tempFile.delete() ) tempFile.deleteOnExit();

분명히 File.deleteOnExit() Windows에서는 그다지 신뢰할 수 없습니다. 따라서 가능할 때마다 완료되면 임시 파일을 수동으로 닫고 삭제해야합니다. 자세한 내용은 참조하십시오 이 대답은 다른 질문에 썼습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top