Borrar un directorio con Java

28/dic/2008 Java , , 17 Comentarios
java

Para borrar un directorio en Java podemos utilizar el mismo código que para borrar un fichero.

Los pasos serían muy sencillos, ya que simplemente deberíamos de instanciar el objeto File y ejecutar el método .delete sobre el directorio.

  1.  
  2. String sDirectorio = "c:\\directorio";
  3. File f = new File(sDirectorio);
  4.  
  5. if (f.delete())
  6. System.out.println("El fichero " + sDirectorio + " ha sido borrado correctamente");
  7. else
  8. System.out.println("El fichero " + sDirectorio + " no se ha podido borrar");
  9.  

El inconveniente de este código es que solo funciona si el directorio sobre el que lo ejecutamos está vacío.

Es por ello que para borrar un directorio con Java deberemos de borrar cada uno de los ficheros y directorios que este contenga. Al poder almacenar otros directorios, el código debe de recorrer recursivamente el directorio para ir borrando todos los ficheros.

Para ello vamos a realizar un método que recorra los directorios, vaya borrando los ficheros del directorio y vaya entrando en los subdirectorios para hacer la misma operación.

  1.  
  2. public static void borrarDirectorio (File directorio){...}
  3.  

Lo primero que haremos en el método borrarDirectorio es recuperar la lista de ficheros del directorio mediante el método .listFiles(). Mediante un bucle for recorreremos los elementos del directorio

  1.  
  2. File[] ficheros = directorio.listFiles();
  3.  
  4. for (int x=0;x<ficheros.length;x++){...}
  5.  

Si el elemento es un directorio, lo sabemos mediante el método .isDirectory, volvemos a llamar al método borrarDirectorio y luego borramos el directorio. En caso contrario, simplemente borramos el fichero.

  1.  
  2. if (ficheros[x].isDirectory()) {
  3. borrarDirectorio(ficheros[x]);
  4. }
  5. ficheros[x].delete())
  6.  

En el programa principal instanciamos el directorio a borrar y llamamos al método borrarDirectorio. Una vez borrado el directorio, ejecutamos el método .delete() sobre el directorio, que ya estará vacío.

  1.  
  2. String sDirectorio = "c:\\prueba";
  3. File f = new File(sDirectorio);
  4.  
  5. borrarDirectorio(f);
  6.  
  7. if (f.delete())
  8. System.out.println("El directorio " + sDirectorio + " ha sido borrado correctamente");
  9. else
  10. System.out.println("El directorio " + sDirectorio + " no se ha podido borrar");
  11.  

Vídeos sobre Java

Difunde el Conocimiento

Si te ha gustado el artículo o te ha sido de utilidad, no dejes de compartirlo con tus amigos en las redes sociales... Te estaremos muy agradecidos. :-D

17 comentarios en “Borrar un directorio con Java”

Víctor Cuervo

Ivan

Gracias ante todo,

No se si es que me estoy perdiendo algo o borras los archivos pero no acabas borrando los directorios. Si es un directorio volvera a la funcion y listar lo que tiene dentro pero nunca llegará al delete del else.

Víctor Cuervo

Izak

Hola que tal, funciona muy bien, lo que quiero es que solo borre el contenido de la carpeta, no toda la carpeta entera, como podría hacerle.
Gracias!

Víctor Cuervo

Víctor Cuervo

@juanita,

Me alegra mucho que te haya servido. 😀

Víctor Cuervo

juanita

funciona perfecto, muchas gracias!

Víctor Cuervo

Víctor Cuervo

Me alegro mucho @Miguel 😀

Víctor Cuervo

Miguel

Ok, si lo que yo quiero es que del directorio que le mando me borre todo lo que esta dentro de el, pero no lo que esta fuera y si me funciono muchas gracias!!!!

Víctor Cuervo

Víctor Cuervo

@Miguel,

En este código solo se borra el directorio y todos los que cuelguen de él. Si quieres que solo te borre el directorio actual tienes que modificar la línea

if (ficheros[x].isDirectory()) {
//borrarDirectorio(ficheros[x]);
}
ficheros[x].delete())

Comentando la línea borrarDirectorio para que no entre en los directorios anidados.

Espero que te sirva.

Saludos.

Víctor Cuervo

Miguel

Una pregunta, hasta donde va a borrar, xq ya me paso que hice un ciclo para borrar y me acabo borrando todo mi proyecto.
Gracias!!

Víctor Cuervo

Andrea

Hola me pueden ayudar: necesito un codigo para borrar, modificar y buscar
este es mi codigo. se los agradeceria muchoo q me pudieran ayudar!!!!

import java.util.Scanner;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author Andrea Izaguirre
*/
public class prooyeectoo {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner leer = new Scanner(System.in);
int op=0;

imprimirmenu();
op = leer.nextInt();

switch (op)
{
case 1:
Ingresar();
break;

case 2:
Borrar();
break;

}

}
//Imprimir el menu
public static void imprimirmenu()

{
System.out.println(” **********************”);
System.out.println(” ** MENU AGENDA **”);
System.out.println(” ** 1.Ingresar **”);
System.out.println(” ** 2.Borrar **”);
System.out.println(” ** 3.Buscar **”);
System.out.println(” ** 4.Modificar **”);
System.out.println(” ** 5.Salir **”);
System.out.println(” **********************”);
System.out.println(” “);
System.out.print(” Ingrese una opcion: “);
System.out.println(” “);

}
//Colocando las opciones
public static void Ingresar(){

{
Scanner leer = new Scanner(System.in);
String nom;
String tel;
String dir;
String email;
int op = 0;

System.out.println(” “);
System.out.println(“Nombre: “);
nom=leer.nextLine();
System.out.println(” “);
System.out.println(“Telefono: “);
tel=leer.nextLine();
System.out.println(” “);
System.out.println(“Direccion: “);
dir=leer.nextLine();
System.out.println(” “);
System.out.println(“Correo Electronico: “);
email=leer.nextLine();
System.out.println(” “);

//Opcion para Borrar
public static void Borrar(){

{

}
}
}

Víctor Cuervo

Víctor Cuervo

Gracias @Leonardo. 😀

Víctor Cuervo

Leonardo

Muchas gracias! funciona muy bien. Un algoritmo corto y efectivo, muy bien! Me salvaste!

Víctor Cuervo

Víctor Cuervo

@Jtux, @D@v!d, @Trinity, @milerx,…

Me alegro que les haya servido de ayuda. :-)

Víctor Cuervo

milerx

gracias!

Víctor Cuervo

Trinity

Excelente, no había encontrado esta respuesta en ningún lado. Está muy claro y muy completo. Gracias por ayudarnos con esta información.

Víctor Cuervo

D@v!d

Hey LO estaba buscando FUNCIONA de maravilla y sin librerias externas 100% recomendado. GRACIAS

Víctor Cuervo

Jtux

Bien….Funciono…

Víctor Cuervo

chuidiang

Hola:

Bienvenido de nuevo, hace mucho que no actualizabas el blog y ya te creía “perdido”.

Se bueno.

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*


*