Check the new version here

Popular channels

Borrar carpeta con contenido en Java - Algoritmo

Hola buenos días. Aquí os traigo mi primer post y va sobre el algoritmo que hay que usar para eliminar una carpeta que tiene varias cosas dentro, incluidas otras carpetas que también tienen cosas dentro, etc.

He mirado si ya había algo sobre este tema escrito en español y he visto que no hay mucho. Algunos llamados "algoritmos" solo sirven si en la carpeta que quieres borrar solo hay archivos o carpetas vacías, pero no usan la recursividad para eliminarla en caso de que contenga carpetas con archivos y más carpetas que también tengan archivos y carpetas, etc.
Al final algoritmos que funcionen con explicación en español quedan pocos, y son todos bastantes largos, no digo que no haya absolutamente ninguno, digo que son pocos.



Vamos a conseguir eliminar una carpeta que contenga cualquier archivo.


Código fuente de toda la aplicación:
package javaapplication48; import java.io.File; public class JavaApplication48 {
// Main.
public static void main(String[] args) {
    funcionEliminarCarpeta1 (new File ("ruta carpeta a eliminar"   );  }

private static void funcionEliminarCarpeta1(File pArchivo) {
    if (!pArchivo.exists()) { return; }

    if (pArchivo.isDirectory()) {
        for (File f : pArchivo.listFiles()) {
            funcionEliminarCarpeta1(f);  }
    }
    pArchivo.delete();
} // Cerramos funcion.
} // Cerramos clase.

Imagen del código:


El código escrito es una copia de la imagen, pero para ver la explicación es mejor que vayáis siguiendo la imagen en vez del código escrito. Lo primero decir que para realizar la función debemos importar la clase File de java.io.File


En nuestra explicación llamaremos "función" a funcionEliminarCarpeta1.

La función recibirá un objeto de tipo File que será el que borraremos. Lo primero comprobamos si existe, si es así continuamos, si no existe finalizamos la función. Si existe, comprobamos si es una carpeta, de ser así invocaremos a función tantas veces como archivos haya pasándole cada uno de esos archivos. Al final borraremos el archivo. Es posible que pueda parecer que se pierde tiempo y que podríamos añadir un if, pero en caso de que directamente se pueda borrar la carpeta porque no tiene nada, ese bucle for no se ejecutará, ya que no hay nada dentro.


Podríamos añadir una forma de comprobar si se da el caso de que un archivo, no una carpeta, no se pueda eliminar, podríamos devolver false, y por defecto devolver true. Esto no indicaría si se ha borrado o no, esto indicaría si un archivo (no una carpeta) no se ha podido eliminar. Esto requiere cambiar la función de tipo void a tipo boolean.


EN CASO DE QUE EXISTA CUALQUIER ERROR INFORMEN EN LOS COMENTARIOS POR FAVOR.
+1
0
0
0No comments yet