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.