source

Java에서 디렉터리 내용을 삭제하는 방법

lovecheck 2022. 11. 18. 21:32
반응형

Java에서 디렉터리 내용을 삭제하는 방법

디렉토리를 열거한 후 모든 파일을 삭제해야 합니다.

사용:

final File[] files = outputFolder.listFiles();
files.delete();

그러나 디렉토리는 삭제되지 않았습니다.

각 파일에 대해 다음을 수행해야 합니다.

public static void deleteFolder(File folder) {
    File[] files = folder.listFiles();
    if(files!=null) { //some JVMs return null for empty dirs
        for(File f: files) {
            if(f.isDirectory()) {
                deleteFolder(f);
            } else {
                f.delete();
            }
        }
    }
    folder.delete();
}

그럼 전화해요

deleteFolder(outputFolder);

파일이 있는 폴더를 삭제하기 위해 루프나 재귀 검색이 필요하지 않습니다.다음을 직접 사용할 수 있습니다.

FileUtils.deleteDirectory(<File object of directory>);

이 함수는 폴더와 폴더 내의 모든 파일을 디렉토리 삭제합니다.

삭제하기 전에 디렉토리에서 모든 파일을 삭제해야 합니다.

서드파티제 라이브러리에는 많은 공통 유틸리티가 있습니다.이러한 유틸리티는 다음과 같습니다.

어레이에서는 삭제할 수 없습니다!이렇게 하면 더 잘 동작합니다.

for (File f : files) f.delete();

그러나 폴더가 비어 있지 않으면 작동하지 않습니다.이 경우 폴더 계층으로 반복적으로 내려와 모든 항목을 삭제해야 합니다.네, 자바가 디폴트로 그렇게 할 수 없는 것이 유감입니다.

라이브러리 없이 문제를 해결할 수 있는 방법은 다음과 같습니다.

public static boolean delete(File file) {

    File[] flist = null;

    if(file == null){
        return false;
    }

    if (file.isFile()) {
        return file.delete();
    }

    if (!file.isDirectory()) {
        return false;
    }

    flist = file.listFiles();
    if (flist != null && flist.length > 0) {
        for (File f : flist) {
            if (!delete(f)) {
                return false;
            }
        }
    }

    return file.delete();
}

삭제는 할 수 없습니다.File배열. 다른 모든 답변에서 알 수 있듯이 폴더를 삭제하기 전에 각 개별 파일을 삭제해야 합니다.

final File[] files = outputFolder.listFiles();
for (File f: files) f.delete();
outputFolder.delete();

FileUtils.deleteDirectory()와 함께 FileUtils를 사용합니다.

for(File f : files) {
    f.delete();
}    
files.delete(); // will work

언급URL : https://stackoverflow.com/questions/7768071/how-to-delete-directory-content-in-java

반응형