ディレクトリを列挙した後、すべてのファイルを削除する必要があります。
私が使用した:
final File[] files = outputFolder.listFiles();
files.delete();
しかし、これはディレクトリを削除していません。
ディレクトリを列挙した後、すべてのファイルを削除する必要があります。
私が使用した:
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がデフォルトでそれを行うことができないのは残念です...
ライブラリなしで問題を解決するための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();
}
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