Java - Eine Datei löschen

Dieser kurze Artikel zeigt, wie Sie eine Datei in Java löschen - zuerst mit JDK 6, dann mit JDK 7 und schließlich mit der Apache Commons IO-Bibliothek.

Dieser Artikel ist Teil der Reihe „Java - Back to Basic“ hier auf Baeldung.

1. Mit Java - JDK 6

Beginnen wir mit der Standard-Java 6-Lösung:

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

Wie Sie sehen können, muss die Datei vor dem Löschvorgang vorhanden sein . Ist dies nicht der Fall, löst die API keine Ausnahmen aus, sondern gibt stattdessen false zurück.

2. Mit Java - JDK 7

Fahren wir mit der JDK 7-Lösung fort:

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

Jetzt - dies wird Ausnahmen besser nutzen. Wenn die Datei beim Auslösen des Löschvorgangs nicht vorhanden ist, wird von der API eine NoSuchFileException ausgelöst :

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

3. Mit Commons IO

Mit Commons IO können wir das Ausnahmeverhalten beim Löschen einer Datei steuern. Für ein leises Löschen, das mögliche Ausnahmen verschluckt:

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

Beachten Sie, dass wir immer noch feststellen können, ob der Vorgang erfolgreich war oder nicht, indem wir einfach den Rückgabewert der Löschmethode überprüfen.

Nun - wenn wir wollen, dass eine Ausnahme ausgelöst wird:

@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")); }

Wenn die zu löschende Datei nicht im Dateisystem vorhanden ist, löst die API eine Standard- FileNotFoundException aus :

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

Und da haben Sie es - 4 einfache Möglichkeiten, eine Datei in Java zu löschen.