Java: eliminar un archivo

Este artículo rápido ilustra cómo eliminar un archivo en Java, primero usando JDK 6, luego JDK 7 y finalmente la biblioteca IO de Apache Commons.

Este artículo es parte de la serie "Java - Back to Basic" aquí en Baeldung.

1. Con Java - JDK 6

Comencemos con la solución estándar de Java 6:

@Test public void givenUsingJDK6_whenDeletingAFile_thenCorrect() throws IOException { new File("src/test/resources/fileToDelete_jdk6.txt").createNewFile(); File fileToDelete = new File("src/test/resources/fileToDelete_jdk6.txt"); boolean success = fileToDelete.delete(); assertTrue(success); }

Como puede ver, el archivo debe existir antes de la operación de eliminación ; si no lo hace, la API no arrojará ninguna excepción, sino que devolverá falso.

2. Con Java - JDK 7

Pasemos a la solución JDK 7:

@Test public void givenUsingJDK7nio2_whenDeletingAFile_thenCorrect() throws IOException { Files.createFile(Paths.get("src/test/resources/fileToDelete_jdk7.txt")); Path fileToDeletePath = Paths.get("src/test/resources/fileToDelete_jdk7.txt"); Files.delete(fileToDeletePath); }

Ahora, esto hará un mejor uso de las excepciones. Si el archivo no existe cuando se activa la operación de eliminación, la API lanzará una NoSuchFileException :

java.nio.file.NoSuchFileException: srctestresourcesfileToDelete_jdk7.txt at s.n.f.WindowsException.translateToIOException(WindowsException.java:79)

3. Con Commons IO

Commons IO nos permite controlar el comportamiento de las excepciones al eliminar un Archivo. Para una eliminación silenciosa que se traga cualquier posible excepción:

@Test public void givenUsingCommonsIo_whenDeletingAFileV1_thenCorrect() throws IOException { FileUtils.touch(new File("src/test/resources/fileToDelete_commonsIo.txt")); File fileToDelete = FileUtils.getFile("src/test/resources/fileToDelete_commonsIo.txt"); boolean success = FileUtils.deleteQuietly(fileToDelete); assertTrue(success); }

Tenga en cuenta que aún podemos determinar si la operación fue exitosa o no simplemente verificando el valor de retorno del método de eliminación.

Ahora, si queremos que se lance una excepción:

@Test public void givenUsingCommonsIo_whenDeletingAFileV2_thenCorrect() throws IOException { FileUtils.touch(new File("src/test/resources/fileToDelete.txt")); FileUtils.forceDelete(FileUtils.getFile("src/test/resources/fileToDelete.txt")); }

Si el archivo que se va a eliminar no existe en el sistema de archivos, la API lanzará una FileNotFoundException estándar :

java.io.FileNotFoundException: File does not exist: srctestresourcesfileToDelete.txt at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:2275)

Y ahí lo tiene: 4 formas sencillas de eliminar un archivo en Java.