Ștergeți conținutul unui fișier în Java

1. Introducere

În acest tutorial, vom vedea cum folosim Java pentru a șterge conținutul unui fișier fără a șterge fișierul în sine. Deoarece există multe modalități simple de a face acest lucru, să explorăm fiecare câte unul.

2. Utilizarea PrintWriter

Clasa PrintWriter din Java extinde clasa Writer . Tipărește reprezentarea formatată a obiectelor în fluxul de ieșire text.

Vom efectua un test simplu. Să creăm o instanță PrintWriter care indică un fișier existent, ștergând conținutul existent al fișierului doar închizându-l, apoi să ne asigurăm că lungimea fișierului este goală:

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

De asemenea, rețineți că, dacă nu avem nevoie de obiectul PrintWriter pentru procesare ulterioară, aceasta este cea mai bună opțiune. Cu toate acestea, dacă avem nevoie de obiectul PrintWriter pentru operațiuni ulterioare de fișiere, putem face acest lucru diferit:

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

3. Utilizarea FileWriter

FileWriter- ul Java este o clasă API Java IO standard care oferă metode pentru a scrie date orientate spre caractere într-un fișier.

Să vedem acum cum putem face aceeași operație folosind FileWriter:

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

În mod similar, dacă avem nevoie de obiectul FileWriter pentru procesare ulterioară, îl putem atribui unei variabile și îl putem actualiza cu un șir gol.

4. Utilizarea FileOutputStream

FileOutputStream din Java este un flux de ieșire utilizat pentru scrierea datelor de octeți într-un fișier.

Acum, să ștergem conținutul fișierului folosind FileOutputStream:

new FileOutputStream(FILE_PATH).close(); 

5. Utilizarea Apache Commons IO FileUtils

Apache Commons IO este o bibliotecă care conține clase de utilități pentru a ajuta la problemele obișnuite de IO. Putem șterge conținutul fișierului folosind una dintre clasele sale de utilități - FileUtils.

Pentru a vedea cum funcționează, să adăugăm dependența Apache Commons IO la pom.xml :

 commons-io commons-io 2.5  

După aceea, să luăm un exemplu rapid care să demonstreze ștergerea conținutului fișierului:

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

6. Utilizarea fișierelor Java NIO

Fișierul Java NIO a fost introdus în JDK 7. Acesta definește interfețele și clasele pentru a accesa fișiere, atribute de fișiere și sisteme de fișiere.

De asemenea, putem șterge conținutul fișierului folosind java.nio.file.Files :

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

7. Utilizarea Java NIO FileChannel

Java NIO FileChannel este implementarea NIO pentru conectarea unui fișier. De asemenea, completează pachetul standard IO Java.

De asemenea, putem șterge conținutul fișierului folosind java.nio.channels.FileChannel :

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

8. Utilizarea Guava

Guava este o bibliotecă open source bazată pe Java, care oferă metode de utilitate pentru a efectua operațiuni I / O. Să vedem cum să utilizați API-ul Guava pentru ștergerea conținutului fișierului.

Mai întâi, trebuie să adăugăm dependența Guava în pom.xml :

 com.google.guava guava 22.0  

După aceea, să vedem un exemplu rapid pentru a șterge conținutul fișierului folosind Guava:

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

9. Concluzie

Pentru a rezuma, am văzut mai multe moduri de a șterge conținutul unui fișier fără a șterge fișierul în sine.

Implementarea completă a acestui tutorial poate fi găsită pe GitHub.