clasa Java FileWriter, java.io.FileWriter
, face posibilă scrierea de caractere într-un fișier. În acest sens, java FileWriter funcționează la fel ca FileOutputStream
, cu excepția faptului că un FileOutputStream
se bazează pe octeți, în timp ce un FileWriter
se bazează pe caractere. FileWriter
este destinat să scrie text, cu alte cuvinte. Un caracter poate corespunde unuia sau mai multor octeți, în funcție de schema de codificare a caracterelor utilizată. Clasa Java FileWriter
este o subclasă a clasei java Writer, apropo.
exemplu FileWriter
aici este un simplu Java FileWriter
exemplu:
Writer fileWriter = new FileWriter("data\filewriter.txt");fileWriter.write("data 1");fileWriter.write("data 2");fileWriter.write("data 3");fileWriter.close();
notă: Manipularea corectă a excepțiilor a fost omisă aici din motive de claritate. Pentru a afla mai multe despre gestionarea corectă a excepțiilor, accesați manipularea excepțiilor Java IO.
FileWriter
are și alți constructori, permițându-vă să specificați fișierul în care să scrieți în moduri diferite. Uită-te în JavaDoc oficial pentru informații mai detaliate.
suprascrierea vs.adăugarea fișierului
când creați un Java FileWriter
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. Tu decizi că prin alegerea ceea ce FileWriter
constructor utilizați.
constructorul FileWriter
luând doar un parametru, numele fișierului, va suprascrie orice fișier existent:
Writer fileWriter = new FileWriter("c:\data\output.txt");
FileWriter
are un constructor care are și 2 parametri: numele fișierului și un boolean. Boolean indică dacă să adăugați sau suprascrie un fișier existent. Aici sunt două Java FileWriter
exemple care arată că:
Writer fileWriter = new FileWriter("c:\data\output.txt", true); //appends to fileWriter fileWriter = new FileWriter("c:\data\output.txt", false); //overwrites file
codificare caractere FileWriter
FileWriter
presupune că doriți să codificați octeții în fișier utilizând codificarea implicită a caracterelor pentru computerul pe care rulează aplicația dvs. Este posibil să nu fie întotdeauna ceea ce îți dorești și nu îl poți schimba!
dacă doriți să specificați o schemă de codificare a caracterelor diferită, nu utilizați un FileWriter
. Utilizați un OutputStreamWriter
pe un FileOutputStream
în schimb. OutputStreamWriter
vă permite să specificați schema de codificare a caracterelor de utilizat atunci când scrieți octeți în fișierul de bază.
write(int)
metoda Java FileWriter
write(int)
scrie 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 serie de caractere la destinația FileWriter
este conectat la. Metoda write(char)
returnează numărul de caractere scrise efectiv la FileWriter
. Iată un exemplu de scriere a unei matrice de caractere într-un Java FileWriter
:
FileWriter fileWriter = new FileWriter("data/output.txt");char chars = new char{'A','B','C','D','E'};fileWriter.write(chars);
scrie performanță
este mai rapid pentru a scrie o serie de caractere la un Filewriter Java decât scris un caracter la un moment dat. Accelerarea poate fi destul de semnificativă – 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.
accelerarea exactă pe care o obțineți depinde de sistemul de operare și hardware-ul de bază al computerului pe care rulați codul Java. Accelerarea depinde de probleme cum ar fi viteza de memorie, viteza de hard disk și dimensiuni tampon etc.
tamponare transparentă prin BufferedWriter
puteți obține tamponare transparentă a octeților scrise într-un Java FileWriter
înfășurându-l într-un BufferedWriter Java . Toți octeții scrise la BufferedWriter
vor fi mai întâi tamponate într-o matrice internă de octeți în BufferedWriter
. Când tamponul este plin, tamponul este spălat la baza FileWriter
dintr-o dată. Aici este un exemplu de ambalaj un Java FileWriter
într-o 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 Java FileWriter
‘s flush()
flushes toate datele scrise la FileWriter
la fișierul de bază. Datele ar putea fi tamponate în memoria OS undeva, chiar dacă codul Java a scris-o la FileWriter
. Apelând flush()
vă puteți asigura că orice date tamponate vor fi spălate (scrise) pe disc. Iată un exemplu de spălare a datelor scrise într-un Java FileWriter
apelând metoda flush()
:
fileWriter.flush();
închiderea unui FileWriter
când ați terminat de scris caractere la un Java FileWriter
ar trebui să vă amintiți să-l închidă. Închiderea unui FileWriter
se face apelând metoda close()
. Iată cum arată închiderea unui Java FileWriter
:
fileWriter.close();
de asemenea, puteți utiliza construcția try-with-resources introdusă în Java 7. Iată cum să utilizați și să închideți un aspect FileWriter
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");}