¡Hola, Invitado!


Patrocinantes


Síguenos en Facebook


Síguenos en Twitter

Compartir este tema:
[Código] Borrar un directorio/carpeta usando la clase File
-Gosw- Sin conexión
Administrador
*******

Mensajes: 1.984
Registro en: Jul 2010
Facebook Twitter YouTube
Gracias dados: 62
Gracias recibidos: 93
Mensaje: #1
Borrar un directorio/carpeta usando la clase File
  • Compartir en Delicious
  • Compartir en Digg
  • Compartir en Linkedin
  • Compartir en MySpace
  • Compartir en Technorati
  • Compartir en Tuenti
En el articulo anterior (http://foro.cibernodo.net/tema-borrar-un...lase-file) veíamos como borrar un archivo único usando la clase File de java (por supuesto), esta vez veremos como se borra un directorio (carpeta) del sistema, el tratamiento obviamente es algo distinto puesto que debemos averiguar si esta carpeta tiene otras carpetas y archivos dentro y a su vez las demás carpetas tienen otras cosas y así sucesivamente.

No les suena esto a Recursividad? Pues si, se debe hacer recursividad para ir revisando cada carpeta que nos consigamos, recuerden también que debemos borrar en orden jerárquico, es decir, desde la ultima hoja del árbol hasta la raíz y no viceversa.

Bien pondré un método para hacer lo que necesitamos y luego se los explico:

Lenguaje JAVA
public void BorrarDirLocal(File dir) {
 
                File[] f = dir.listFiles();
                for(int i = 0; i < f.length; i++) {
 
                    if(f[i].isDirectory()) {
 
                        BorrarDirLocal(f[i]);
                    }
                    if(!f[i].delete()) {
                        System.out.println("Error al borrar " + f[i].getName());
                    }
                }
        }


Fíjense que es sencillo, el método recibirá una variable del tipo File (ya mencionamos en el articulo anterior que la variable debe contener la ruta de la carpeta a borrar), luego se crea dentro del método un arreglo del tipo File también, que recibirá el listado de carpetas y archivos que se encuentren dentro de la variable que recibió el método, en este caso dir.

Luego con su respectivo ciclo for (que cuenta hasta la cantidad de archivos existentes dentro de la carpeta evaluada) se procesa cada archivo y/o carpeta, por eso con un if se si f[i] es una carpeta, de serlo se llama al mismo método que estamos construyendo, cuyo parámetro sera la nueva carpeta (f[i] en este caso), si no es una carpeta, pues se procede a borrar (recuerden que delete() devuelve un valor booleano que debemos capturar y ademas procesar.

De esta manera podremos borrar cualquier carpeta siempre que sea posible claro esta, recuerden ademas agregar las condiciones necesarias para evaluar si la carpeta se puede escribir (necesario para poder borrar, porque si no tenemos permiso sera erróneo, canWrite() es el método para ello).

Hasta una nueva entrega.

[Imagen: administradorq.png]
HTC Desire SLCD: S-OFF, cm7/r2 hboot, CyanogenMod Kernel, CyanogenMod NB 262
Samsung Galaxy S i9000: Chainfire Kernel (CF-ROOT), Value Pack ROM 2.3.6 JVU
SE Xperia x10i: Unlocked Bootloader, FXP052 Kernel, CyanogenMod 7.2.0 FXP052
Motorola Dext MB200: CyanogenMod 7.1 RC1
LG Optimus One P500: Stock ROM 2.3.3
ZTE Racer: Stock
11-11-2010 07:40 AM
WWW Buscar Citar




Usuario(s) navegando en este tema: 1 invitado(s)