2016-06-06 7 views
0

junrar을 사용하고 있는데 추출 후 아카이브를 삭제하는 데 문제가 있습니다.Junrar를 통해 rar 파일을 추출한 다음 보관 파일을 삭제하십시오.

ExtractArchive extractArchive = new ExtractArchive(); 
extractArchive.extractArchive(new File(archiveFilePath), new File(destDirectory)); 

내가 archiveFilePath에 관련된 파일을 삭제할 수있는이 코드 뒤에 : 이 코드입니다. 둘 다 new File(archiveFilePath).delete();

FileDeleteStrategy.FORCE.delete(new File(archiveFilePath)); 

apache commons io을 시도했지만 파일이 다른 프로세스에서 사용되기 때문에 나는 허위 또는 한 가지 예외가 나타납니다. 누군가이 라이브러리에 동일한 문제가 있습니까? 다른 방법으로 파일을 제거 할 수 있습니까? 이 내부적으로 Archive 인스턴스를 생성하지만, 결코 그것의 자원과 파일 핸들을 확보하기 위해 close()를 호출하지 않기 때문에 https://github.com/edmund-wagner/junrar/issues/28

답변

1

ExtractArchive.extractArchive(...)의 코드 결함입니다 :

감사

다음은 문제의 확인이 있습니다.

Windows에서는 JVM이 끝나거나 가비지 수집기가 해당 아카이브의 모든 개체 인스턴스를 수집하여 파일 핸들을 해제하지 않는 한 삭제할 수없는 잠긴 파일이됩니다.

Windows에서는 파일을 삭제할 수있는 다른 방법이 없습니다.

+0

필자가 생각하기에, 새로운 Archive 객체를 포함한 extractArchive 메소드를 try() 대괄호로 오버라이드했습니다. – luca