java
[java] File 지우기. delete vs deleteOnExit()
juhi
2022. 6. 22. 10:14
.delete() 함수는 실행 즉시 파일을 삭제하고 deleteOnExit()은 jvm이 종료할 때 파일을 삭제한다.
.delete()
실행 시점 즉시 파일 삭제
File inputFile = new File(fileName);
InputStream inputStream = new FileInputStream(inputFile);
byte[] buf = new byte[1024];
int len;
while( (len = inputFile.read(buf)) > 0 ){
outputStream.write(buf, 0, len);
}
inputFile.delete(); // 파일 삭제
유의할 점
실행 시점에 즉시 삭제되므로, 파일을 사용하는 모든 작업이 끝난 뒤에 실행하도록 코드를 작성해야 한다.
장점
파일이 쌓이지 않고 바로 삭제된다.
만약 파일을 outstream에 쓰거나, 출력해서 더 이상 쓸 필요가 없어지면 그 시점에 바로 delete로 삭제하는게 더 좋다.
deleteOnExit()
실행 시점이 아닌 jvm이 종료할 때 파일을 삭제한다.
File inputFile = new File(fileName);
inputFile.deleteOnExit(); // 파일 삭제
InputStream inputStream = new FileInputStream(inputFile);
byte[] buf = new byte[1024];
int len;
while( (len = inputFile.read(buf)) > 0 ){
outputStream.write(buf, 0, len);
}
유의할점
따라서 jvm이 실행중인 상태에서는 계속해서 파일이 쌓인다.
예를들어 배포 후 계속 돌아가는 서버에서 deleteOnExit을 사용한다면, 서버를 종료하지 않는 이상 파일이 삭제되지 않는다.
장점
파일을 사용하는 작업이 끝난 시점을 고려할 필요 없어서 코드 작성이 쉽다.
반응형