94

ディレクトリを列挙した後、すべてのファイルを削除する必要があります。

私が使用した:

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

しかし、これはディレクトリを削除していません。

4

8 に答える 8

133

ファイルごとにこれを行う必要があります。

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);
于 2011-10-14T13:10:30.763 に答える
106

ファイルを含むフォルダーを削除するには、ループや再帰検索は必要ありません。以下を直接使用できます。

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

この関数は、フォルダーとその中のすべてのファイルをディレクトリ削除します。

于 2011-12-26T04:24:08.730 に答える
11

ディレクトリを削除する前に、すべてのファイルをディレクトリから削除する必要があります。

あなたのためにそれを行うものを含め、多くの一般的なユーティリティを備えたサードパーティのライブラリがあります。

于 2011-10-14T13:12:26.120 に答える
8

配列では削除できません! これはうまくいくはずです:

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

ただし、フォルダが空でない場合は機能しません。この場合、再帰的にフォルダー階層を下って、すべてを削除する必要があります。はい、Javaがデフォルトでそれを行うことができないのは残念です...

于 2011-10-14T13:12:15.360 に答える
5

ライブラリなしで問題を解決するための1つの可能な解決策は次のとおりです。

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();
}
于 2013-07-03T10:25:26.773 に答える
4

File配列を削除することはできません。他のすべての回答が示唆するように、フォルダーを削除する前に個々のファイルを削除する必要があります...

final File[] files = outputFolder.listFiles();
for (File f: files) f.delete();
outputFolder.delete();
于 2011-10-14T13:16:46.807 に答える
2

FileUtils.deleteDirectory(); で FileUtils を使用します。

于 2013-01-31T14:42:16.727 に答える
0
for(File f : files) {
    f.delete();
}    
files.delete(); // will work
于 2011-10-14T13:13:42.223 に答える