After enumerating a directory, I now need to delete all the files.
I used:
final File[] files = outputFolder.listFiles();
files.delete();
But this hasn't deleted the directory.
After enumerating a directory, I now need to delete all the files.
I used:
final File[] files = outputFolder.listFiles();
files.delete();
But this hasn't deleted the directory.
You can't delete on an array ! This should work better :
for (File f : files) f.delete();
But it won't work if the folders are not empty. For this cases, you will need to recursively descend into the folder hierarchy and delete everything. Yes it's a shame Java can't do that by default...
All files must be delete from the directory before it is deleted.
There are third party libraries that have a lot of common utilities, including ones that does that for you:
You can't delete an File
array. As all of the other answers suggest, you must delete each individual file before deleting the folder...
final File[] files = outputFolder.listFiles();
for (File f: files) f.delete();
outputFolder.delete();
To delete folder having files, no need of loops or recursive search. You can directly use:
FileUtils.deleteDirectory(<File object of directory>);
This function will directory delete the folder and all files in it.
Here is one possible solution to solve the problem without a library :
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();
}
You have to do this for each File:
Then call