[ Foro de Java ]

Eliminar Todos los archivos de una carpeta desde Java

23-Aug-2018 09:51
Invitado (Llamas159)
1 Respuestas

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();
}


27-Aug-2018 13:23
Nacho Cabanes (+84)

En casos como esos, intenta llevar esa función a un programa lo más simple posible que la ponga a prueba (a ser posible, incluso de consola), para que el problema sea más evidente y más fácil de reproducir, por ejemplo así:


import java.io.File;

public class FileDel {
    
    public static void main (String[] args) {
        File f = new File("ejemplo/");
        deleteFolder(f);
    }
    
    private /* */ static /* */ void deleteFolder(File fileDel) {
        /* */ System.out.println("Procesando: " + fileDel.getName());
        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);
                        /* */ System.out.println("Ahora borraría: " + fileDelete.getName());
                        //recursive delete
                        deleteFolder(fileDelete);
                    } 
                }
            } catch (Exception e) {
                //JOptionPane.showMessageDialog(null, e);
            }
        }else{
            //JOptionPane.showMessageDialog(null, "El carrito de compra se encuentra vacio");
        }
        //actTabla();
    }
 
}



He añadido un par de detalles que he marcado con /* */, para poder ver el resultado, y he comentado un par de detalles que esta versión de consola no usa.

Verás que debería funcionar, a no ser que sea "null" directamente el parámetro que le pases.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)