Java FileWriter

Clasa Java FileWriter, java.io.FileWriter, face posibilă scrierea de caractere într-un fișier. Din acest punct de vedere, Java FileWriter funcționează foarte asemănător cu FileOutputStream, cu excepția faptului că un FileOutputStream se bazează pe octeți, în timp ce un FileWriter se bazează pe caractere. Cu alte cuvinte, FileWriter este destinat să scrie text. Un caracter poate corespunde la unul sau mai mulți octeți, în funcție de schema de codificare a caracterelor utilizată. Apropo, clasa Java FileWriter este o subclasă a clasei Java Writer.

FileWriter Example

Iată un exemplu simplu Java FileWriter:

Writer fileWriter = new FileWriter("data\filewriter.txt");fileWriter.write("data 1");fileWriter.write("data 2");fileWriter.write("data 3");fileWriter.close();

Notă: Tratarea corespunzătoare a excepțiilor a fost omisă aici din motive de claritate. Pentru a afla mai multe despre tratarea corectă a excepțiilor, mergeți la Java IO Exception Handling.

FileWriter are și alți constructori, permițându-vă să specificați fișierul în care să scrieți în diferite moduri. Uitați-vă în JavaDoc oficial pentru informații mai detaliate.

Subscrierea vs. adăugarea fișierului

Când creați un FileWriter Java puteți decide dacă doriți să suprascrieți orice fișier existent cu același nume sau dacă doriți să adăugați la orice fișier existent. Decideți acest lucru alegând ce constructor FileWriter folosiți.

Constructorul FileWriter care primește un singur parametru, numele fișierului, va suprascrie orice fișier existent:

Writer fileWriter = new FileWriter("c:\data\output.txt");

FileWriter are un constructor care primește și el 2 parametri: Numele fișierului și un boolean. Booleanul indică dacă se adaugă sau se suprascrie un fișier existent. Iată două exemple Java FileWriter care arată acest lucru:

Writer fileWriter = new FileWriter("c:\data\output.txt", true); //appends to fileWriter fileWriter = new FileWriter("c:\data\output.txt", false); //overwrites file

FileWriter Character Encoding

FileWriter Presupune că doriți să codificați octeții către fișier folosind codificarea implicită a caracterelor pentru computerul pe care rulează aplicația dumneavoastră. Este posibil ca acest lucru să nu fie întotdeauna ceea ce doriți și nu îl puteți schimba!

Dacă doriți să specificați o altă schemă de codificare a caracterelor, nu utilizați un FileWriter. Folosiți în schimb un OutputStreamWriter pe un FileOutputStream. OutputStreamWriter vă permite să specificați schema de codificare a caracterelor care trebuie utilizată atunci când scrieți octeți în fișierul de bază.

write(int)

Metoda Java FileWriter write(int) scrie cei 16 biți inferiori ai int la destinația la care este conectat FileWriter, ca un singur caracter. Iată un exemplu de scriere a unui singur caracter într-un Java FileWriter:

FileWriter fileWriter = new FileWriter("data/output.txt");fileWriter.write('A');

write(char)

Java FileWriter are, de asemenea, o metodă write(char) care poate scrie o matrice de caractere la destinația la care este conectat FileWriter. Metoda write(char) returnează numărul de caractere scrise efectiv pe FileWriter. Iată un exemplu de scriere a unui tablou de caractere într-un FileWriter Java:

FileWriter fileWriter = new FileWriter("data/output.txt");char chars = new char{'A','B','C','D','E'};fileWriter.write(chars);

Performanță de scriere

Este mai rapid să scrii un tablou de caractere într-un Java FileWriter decât să scrii câte un caracter la un moment dat. Creșterea vitezei poate fi destul de semnificativă – de până la 10 x mai mare sau mai mult. Prin urmare, se recomandă utilizarea metodelor write(char) ori de câte ori este posibil.

Creșterea exactă a vitezei pe care o obțineți depinde de sistemul de operare și de hardware-ul de bază al computerului pe care executați codul Java. Creșterea de viteză depinde de aspecte cum ar fi viteza memoriei, viteza hard disk-ului și dimensiunile buffer-ului etc.

Buffering transparent prin BufferedWriter

Puteți obține un buffering transparent al octeților scriși într-un FileWriter Java FileWriter prin înfășurarea acestuia într-un Java BufferedWriter . Toți octeții scriși în BufferedWriter vor fi mai întâi puși în buffer într-o matrice internă de octeți din BufferedWriter. Atunci când bufferul este plin, bufferul este descărcat deodată în FileWriter subiacent. Iată un exemplu de înfășurare a unui FileWriter Java într-un BufferedWriter:

int bufferSize = 8 * 1024;Writer writer = new BufferedWriter( new FileWriter("c:\data\output-file.txt"), bufferSize );

Puteți citi mai multe despre BufferedWriter în tutorialul meu BufferedWriter.

flush()

Metoda flush() a FileWriter Java FileWriter aruncă toate datele scrise în FileWriter în fișierul de bază. Este posibil ca datele să fie stocate undeva în memoria sistemului de operare, chiar dacă codul Java le-a scris în FileWriter. Prin apelarea flush() vă puteți asigura că toate datele stocate în memoria tampon vor fi descărcate (scrise) pe disc. Iată un exemplu de ștergere a datelor scrise pe un FileWriter Java prin apelarea metodei flush() a acestuia:

fileWriter.flush();

Closing a FileWriter

Când ați terminat de scris caractere pe un FileWriter Java, trebuie să vă amintiți să îl închideți. Închiderea unui FileWriter se face prin apelarea metodei sale close(). Iată cum arată închiderea unui FileWriter Java:

fileWriter.close();

Puteți utiliza, de asemenea, construcția try-with-resources introdusă în Java 7. Iată cum se utilizează și se închide un FileWriter arată cu construcția try-with-resources:

try(FileWriter fileWriter = new FileWriter("data\filewriter.txt") ){ fileWriter.write("data 1"); fileWriter.write("data 2"); fileWriter.write("data 3");}

.

Leave a Reply