ProgramingTip

Java에서 디렉토리 컨텐츠를 삭제하는 방법은 무엇입니까?

bestdevel 2020. 10. 15. 08:10
반응형

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();

언어 폴더가 비어 있지 않습니다. 이 경우 폴더 계층 구조로 재귀 내려서 모든 것을 삭제해야합니다. 예, Java가 기본적으로 할 수없는 것은 아쉽습니다 ...


다음은 라이브러리없이 문제를 해결할 수있는 한 가지 가능한 솔루션입니다.

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

반응형