로컬 경로에있는 폴더나 파일을 삭제하는 방법을 알아보겠습니다.
d드라이브에 임시폴더와 파일을 생성한 뒤 삭제하는 방법을 예제를 통해 알아볼게요.
D드라이브 아래에 deletetest 폴더 아래에 txt파일 두개가 있습니다.
먼저 파일을 다루기위해 아래 패키지를 import 해줍니다.
import java.io.File;
다음 폴더의 경로를 알아옵니다.
String path = "D:\\deletetest";
File 객체를 생성합니다. 생성자로 경로를 넣어줍니다.
File deleteFolder = new File(path);
폴더를 지우는건 쉽습니다.
deleteFolder.delete();
파일 객체를 delete() 해주면 바로 지워집니다. 하지만 폴더 하위에 파일이 존재 할 경우 지워지지 않습니다.
때문에 하위에있는 파일을 모두 제거해 주어야 하는데요,
File[] deleteFolderList = deleteFolder.listFiles();
선언된 폴더객체에 listFiles() 함수로 폴더안의 파일의 경로를 배열로 받아올 수 있습니다.
File[] deleteFolderList = deleteFolder.listFiles();
for (int j = 0; j < deleteFolderList.length; j ) {
System.out.println(deleteFolderList[j]);
}
D:\deletetest\새 텍스트 문서 (2).txt
D:\deletetest\새 텍스트 문서.txt
하위 파일의 경로를 알 수 있으면 지우는건 쉽겠죠?
File[] deleteFolderList = deleteFolder.listFiles();
for (int j = 0; j < deleteFolderList.length; j ) {
deleteFolderList[j].delete();
}
이렇게 폴더내부의 파일을 모두 지웠으면 마지막으로 폴더를 지워주면 됩니다.
deleteFolder.delete();
전체소스
단, 이 방법은 폴더 하위에 파일 만 존재 할 경우입니다.
폴더 하위에 폴더가 있고 그 폴더의 하위에 파일이 있을경우 지워지지 않는데요, 이경우 폴더 내부파일 제거를 재귀적으로 호출하여 가장 아랫단부터 제거하며 올라와야합니다.
이와같이 폴더아래 폴더가 있고 그안에 파일이 있을경우 위방법으로는 폴더를 제거 할 수 없습니다.
이럴땐 함수로 만들어 재귀적으로 호출하는 방법을 사용해야 합니다.
위 코드와 다른점은 함수로 만들었다는것과 루프문에서 자식파일이 파일인지 폴더인지 구분하여 파일이면 제거, 폴더이면 재귀호출하여 폴더내부를 제거하는 방법입니다.
'Java' 카테고리의 다른 글
[Java]자바 UUID 생성 (=GUID) (0) | 2019.02.11 |
---|---|
[Java]자바 임포트(import)받은 클래스명이 겹칠때 (0) | 2019.01.25 |
[Java]이클립스 디버깅 하기! (4) | 2018.06.22 |
[Java]자바 이클립스 라이브러리를 추가해보자 (0) | 2018.06.21 |
[Java]자바 json형식을 파싱하자!(gson활용) (4) | 2018.06.20 |