Löschen Sie den Inhalt einer Datei in Java

1. Einleitung

In diesem Tutorial werden wir sehen, wie wir Java verwenden, um den Inhalt einer Datei zu löschen, ohne die Datei selbst zu löschen. Da es viele einfache Möglichkeiten gibt, wollen wir jede nach der anderen untersuchen.

2. Verwenden von PrintWriter

Die PrintWriter- Klasse von Java erweitert die Writer- Klasse. Es druckt die formatierte Darstellung von Objekten in den Textausgabestream.

Wir werden einen einfachen Test durchführen. Erstellen Sie eine PrintWriter- Instanz, die auf eine vorhandene Datei verweist, löschen Sie den vorhandenen Inhalt der Datei, indem Sie sie einfach schließen, und stellen Sie dann sicher, dass die Dateilänge leer ist:

new PrintWriter(FILE_PATH).close(); assertEquals(0, StreamUtils.getStringFromInputStream(new FileInputStream(FILE_PATH)).length());

Beachten Sie außerdem, dass dies die beste Option ist, wenn wir das PrintWriter- Objekt nicht für die weitere Verarbeitung benötigen . Wenn wir jedoch das PrintWriter- Objekt für weitere Dateioperationen benötigen , können wir dies anders machen:

PrintWriter writer = new PrintWriter(FILE_PATH); writer.print(""); // other operations writer.close();

3. Verwenden von FileWriter

Der FileWriter von Java ist eine Standard- Java- E / A-API-Klasse, die Methoden zum Schreiben zeichenorientierter Daten in eine Datei bereitstellt.

Lassen Sie uns nun sehen, wie wir denselben Vorgang mit FileWriter ausführen können:

new FileWriter(FILE_PATH, false).close();

Wenn wir das FileWriter- Objekt für die weitere Verarbeitung benötigen , können wir es einer Variablen zuweisen und mit einer leeren Zeichenfolge aktualisieren.

4. Verwenden von FileOutputStream

Der FileOutputStream von Java ist ein Ausgabestream, der zum Schreiben von Byte-Daten in eine Datei verwendet wird.

Löschen wir nun den Inhalt der Datei mit FileOutputStream:

new FileOutputStream(FILE_PATH).close(); 

5. Verwenden von Apache Commons IO FileUtils

Apache Commons IO ist eine Bibliothek, die Dienstprogrammklassen enthält, um bei häufig auftretenden E / A-Problemen zu helfen. Wir können den Inhalt der Datei mit einer ihrer Dienstprogrammklassen - FileUtils - löschen.

Um zu sehen, wie dies funktioniert, fügen wir unserer pom.xml die Apache Commons IO-Abhängigkeit hinzu :

 commons-io commons-io 2.5  

Nehmen wir danach ein kurzes Beispiel, das das Löschen von Dateiinhalten demonstriert:

FileUtils.write(new File(FILE_PATH), "", Charset.defaultCharset());

6. Verwenden von Java NIO- Dateien

Java NIO File wurde in JDK 7 eingeführt. Es definiert Schnittstellen und Klassen für den Zugriff auf Dateien, Dateiattribute und Dateisysteme.

Wir können den Dateiinhalt auch mit java.nio.file.Files löschen :

BufferedWriter writer = Files.newBufferedWriter(Paths.get(FILE_PATH)); writer.write(""); writer.flush();

7. Verwenden von Java NIO FileChannel

Java NIO FileChannel ist die Implementierung von NIO zum Verbinden einer Datei. Es ergänzt auch das Standard-Java-E / A-Paket.

Wir können den Dateiinhalt auch mit java.nio.channels.FileChannel löschen :

FileChannel.open(Paths.get(FILE_PATH), StandardOpenOption.WRITE).truncate(0).close();

8. Verwenden von Guave

Guava ist eine Open-Source-Java-basierte Bibliothek, die Dienstprogrammmethoden für E / A-Vorgänge bereitstellt. Mal sehen, wie man die Guava-API zum Löschen des Dateiinhalts verwendet.

Zuerst müssen wir die Guava-Abhängigkeit in unsere pom.xml einfügen :

 com.google.guava guava 22.0  

Schauen wir uns danach ein kurzes Beispiel zum Löschen von Dateiinhalten mit Guava an:

File file = new File(FILE_PATH); byte[] empty = new byte[0]; com.google.common.io.Files.write(empty, file);

9. Fazit

Zusammenfassend haben wir mehrere Möglichkeiten gesehen, den Inhalt einer Datei zu löschen, ohne die Datei selbst zu löschen.

Die vollständige Implementierung dieses Tutorials finden Sie auf GitHub.