Eliminar una carpeta de forma recursiva con todo su contenido desde Java

Hola a todos, hoy les vengo a mostrar una forma de eliminar el contenido de una carpeta desde java, esto se hace de forma recursiva ya que una carpeta puede tener tanto archivos como subcarpetas.

El código sería de la siguiente forma:

/**
   * Method to delete folder recursive
   * @param fileDel
   */
    private void deleteFolder(File fileDel) {
        if(fileDel.isDirectory()){           
           
            if(fileDel.list().length == 0)
                fileDel.delete();
            else{
               
               for (String temp : fileDel.list()) {
                   File fileDelete = new File(fileDel, temp);
                   //recursive delete
                   deleteFolder(fileDelete);
               }

               //check the directory again, if empty then delete it
               if(fileDel.list().length==0)
                   fileDel.delete();
              
            }

        }else{
           
            //if file, then delete it
            fileDel.delete();           
        }
    }

En este método solo será necesario pasar por parametro la carpeta dentro de una variable File y esta se encargara de borrar todo su contenido incluido sus ramificaciones, espero les haya sido de utilidad y hasta una próxima oportunidad.

Comentarios

  1. Por alguna razon no me funciono, pero prueba este, le agregue un excepcion por si acaso te encuentras con que el archivo no esta:

    void bDirectorio(File borrar){
    if (borrar.isDirectory()) {
    try{
    for (File listFile : borrar.listFiles()) {
    if (listFile.isFile()) {
    listFile.delete();
    listFile.deleteOnExit();
    } else {
    if (listFile.isDirectory()) {
    bDirectorio(listFile);
    listFile.delete();
    listFile.deleteOnExit();
    }
    }
    }
    }catch(NullPointerException e){
    System.out.println(e);
    }
    }
    borrar.delete();
    borrar.deleteOnExit();
    }

    Saludos

    ResponderEliminar
    Respuestas
    1. Gracias por el aporte y veo que también sirve en ese caso quien lo lea tendría dos opciones diferentes para realizarlo, gracias de nuevo

      Eliminar
    2. FireCoID, utilice el tuyo pero no me funciono use el mfca20 y si me funco al parecer algo no hice bien para el escenario que estoy planteando. aunque gracias me dieron luz.

      Eliminar
  2. Que bueno, como se mencionaba se tienen las dos formas diferentes por si existe un escenario que no le funcione una solución

    ResponderEliminar
  3. No me funciono ninguna de las dos xD

    A partir de lo que subieron en la pag hice el siguiente código, pero Tengo un problema, estoy haciendo un trabajo en el cual se aplican unos procesos que van generando archivos .txt con el código, nombre, precio, cantidad y subtotal de un producto dentro de una carpeta, esos archivos que se crean en la carpeta se leen en una tabla que seria el carrito de compra.

    Lo que quiero es que al pulsar un boton de "cancelar compra" se eliminen todos los archivos que estaban dentro de esa carpeta sin eliminar como tal la carpeta.

    El problema consiste en que cuando ejecuto este proceso de eliminar todos los productos me sale el error java.lang.NullPointerException alguien me podría ayudar? Gracias de antemano.

    (el fileDel es la carpeta)

    private void deleteFolder(File fileDel) {
    if(fileDel.exists()){
    try {
    if(fileDel.list().length == 0){
    JOptionPane.showMessageDialog(null, "El carrito de compra se encuentra vacio");
    }else{

    for (String temp : fileDel.list()) {
    File fileDelete = new File(fileDel, temp);
    //recursive delete
    deleteFolder(fileDelete);
    }
    }
    } catch (Exception e) {
    JOptionPane.showMessageDialog(null, e);
    }
    }else{
    JOptionPane.showMessageDialog(null, "El carrito de compra se encuentra vacio");
    }
    actTabla();
    }

    ResponderEliminar
    Respuestas
    1. Hola, al revisar tú código no veo que pueda generarte un error sin embargo puedes identificar si el error es cuando invocas actTabla() ya que no muestras que hace o puedes colocar completa la excepción que te sale en tiempo de ejecución...disculpa la demora en la respuesta

      Eliminar

Publicar un comentario