ディレクトリを列挙した後、すべてのファイルを削除する必要があります。
私が使用した:
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