studio - ¿Cómo eliminar el contenido del directorio en Java?
mover archivos de carpeta java (8)
¡No puedes eliminar en una matriz! Esto debería funcionar mejor:
for (File f : files) f.delete();
Pero no funcionará si las carpetas no están vacías. Para estos casos, deberá descender recursivamente a la jerarquía de carpetas y eliminar todo. Sí, es una pena que Java no pueda hacer eso por defecto ...
Esta pregunta ya tiene una respuesta aquí:
- Eliminar directorios recursivamente en Java 23 respuestas
Después de enumerar un directorio, ahora necesito eliminar todos los archivos.
Solía:
final File[] files = outputFolder.listFiles();
files.delete();
Pero esto no ha eliminado el directorio.
Aquí hay una posible solución para resolver el problema sin una biblioteca:
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();
}
No puede eliminar una matriz de File
. Como sugieren todas las demás respuestas, debe eliminar cada archivo individual antes de eliminar la carpeta ...
final File[] files = outputFolder.listFiles();
for (File f: files) f.delete();
outputFolder.delete();
Para eliminar la carpeta que tiene archivos, no hay necesidad de bucles o búsqueda recursiva. Puede usar directamente:
FileUtils.deleteDirectory(<File object of directory>);
Esta función eliminará la carpeta y todos los archivos en ella.
Pastel fácil :)
Tienes que hacer esto para cada archivo:
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();
}
Luego llame
deleteFolder(outputFolder);
Todos los archivos deben eliminarse del directorio antes de ser eliminados.
Hay bibliotecas de terceros que tienen muchas utilidades comunes, incluidas las que lo hacen por usted:
Use FileUtils con FileUtils.deleteDirectory ();
for(File f : files) {
f.delete();
}
files.delete(); // will work