반응형

파일 및 디렉터리 삭제 방법

디렉터리 안의 파일을 모두 제거해야 디렉터리가 삭제되므로 파일먼저 삭제.

String datePath = "\\src\\main\\resources\\static\\assets\\data\\data1";
File dateFolder = new File(datePath);

File dir[] = dateFolder.listFiles();

 try {
		for (int i = 0; i < dir.length; i++) {
			dir[i].delete(); //파일 삭제
		}

		dateFolder.delete(); //폴더 삭제


	}catch (Exception e){
		e.printStackTrace();
	}

Exception 에러도 없이 삭제가 안 되는 파일이 있었다.

이유 : 해당 파일을 어딘가에서 붙잡고 있음.

delete 이전에 파일을 읽어오는 소스가 있는데 IO stream을 안 닫아 줬기 때문.

///수정 전 
/////Scanner를 닫아야 하는데 안 닫았음. 

try{
	Scanner commentScan = new Scanner(new File(dir[i] + "\\comment"));
	mtDto.setComment(commentScan.nextLine());
}catch(Exception e){

}

try catch를 사용하는 경우 try에서도 닫고 catch에서도 닫아줘야함...

 

결론 : try-with-resource를 사용하면 예외가 발생했든 안 했든간에 사용했던 리소스 객체를 자동으로 닫아주므로

try with resource를 사용하자.

///수정 후

try ( Scanner commentScan = new Scanner(new File(dir[i] + "\\comment")); )
{
	mtDto.setComment(commentScan.nextLine());
}catch(Exception e){

}
반응형

+ Recent posts