Eliminar directorios y archivos de forma recursiva en Java

Inglés4,38 KB

Eliminación recursiva de directorios en Java

A continuación se presenta la corrección y estructuración del código fuente en Java perteneciente a la clase EjercicioFile2. El programa solicita una ruta por consola, comprueba su existencia y procede a eliminar el directorio, ya sea directamente si se encuentra vacío o de forma recursiva si contiene ficheros o subcarpetas.

Código fuente corregido

package ejerciciofile2;

import java.io.File;
import java.util.Scanner;

/**
* Clase para gestionar la eliminación de directorios y ficheros.
* @author thene
*/
public class EjercicioFile2 {

/**
* Método principal que interactúa con el usuario.
* @param args Argumentos de la línea de comandos.
*/
public static void main(String[] args) {
File ubicacion;
int opcion = 0;
boolean verdad = true;
boolean verificacion = true;
boolean self = true;
Scanner teclado = new Scanner(System.in);

do {
System.out.println("Introduce la ubicación del directorio que desea eliminar (debe existir):");
String ruta = teclado.nextLine();
ubicacion = new File(ruta);
} while (!ubicacion.exists());

if (ubicacion.list().length == 0) {
System.out.println("Se va a borrar el directorio deseado: " + ubicacion.delete());
} else {
System.out.println("El directorio que ha marcado no está vacío.");
System.out.println("1. Borrar");
System.out.println("2. Cancelar");

do {
try {
verificacion = false;
opcion = teclado.nextInt();
} catch (java.util.InputMismatchException ex) {
System.out.println("Introduce una opción válida.");
verificacion = true;
teclado.nextLine();
}
} while (verificacion);

do {
switch (opcion) {
case 1:
System.out.println("El archivo " + ubicacion.getName() + " se va a borrar.");
deleteArchivo(ubicacion);
verdad = false;
break;
case 2:
System.out.println("El archivo " + ubicacion.getName() + " no se va a borrar.");
verdad = false;
break;
default:
System.out.println("Introduce una opción válida.");
break;
}
} while (verdad);
}
}

/**
* Método recursivo para eliminar archivos y subcarpetas.
* @param ubicacion Directorio o archivo a borrar.
*/
public static void deleteArchivo(File ubicacion) {
if (ubicacion.isDirectory()) {
File[] fileA = ubicacion.listFiles();
if (fileA != null) {
for (int i = 0; i < fileA.length; i++) {
deleteArchivo(fileA[i]);
}
}
}
ubicacion.delete();
}
}

Explicación de las correcciones aplicadas

  • Ortografía y estilo: Se han añadido las tildes faltantes en mensajes como "ubicación", "está", "vacío" y "opción válida", y se ha homogeneizado el tono de los mensajes informativos.
  • Espaciado: Se corrigieron concatenaciones de cadenas como ubicacion.getName() + "se va a borrar" a ubicacion.getName() + " se va a borrar.".
  • Limpieza de importaciones: Se retiró la importación residual e innecesaria de jdk.nashorn.internal.codegen.CompilerConstants.
  • Estructura y legibilidad: Se organizó el código con etiquetas semánticas y sangrías adecuadas para optimizar la comprensión del algoritmo recursivo.

Descargar

PDF Word HTML