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