Java FileWriter

Java FileWriter-klassen, java.io.FileWriter, gör det möjligt att skriva tecken till en fil. I det avseendet Java FileWriter fungerar ungefär som FileOutputStream förutom att en FileOutputStream är byte baserad, medan en FileWriter är teckenbaserad. FileWriter är avsedd att skriva text, med andra ord. Ett tecken kan motsvara en eller flera byte, beroende på teckenkodningsschemat som används. Java FileWriter – klassen är förresten en underklass av Java Writer-klassen.

FileWriter exempel

här är en enkel Java FileWriter exempel:

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

notera: Den korrekta undantagshanteringen har hoppats över här för tydlighetens skull. Om du vill veta mer om korrekt undantagshantering går du till Java Io Exception Handling.

FileWriter har också andra konstruktörer, så att du kan ange filen att skriva till på olika sätt. Titta i den officiella JavaDoc för mer detaljerad information.

överskrivning vs. lägga till filen

när du skapar en Java FileWriter kan du bestämma om du vill skriva över en befintlig fil med samma namn, eller om du vill lägga till en befintlig fil. Du bestämmer det genom att välja vilken FileWriter konstruktör du använder.

FileWriter konstruktören tar bara en parameter, filnamnet, kommer att skriva över alla befintliga filer:

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

FileWriter har en konstruktör som tar 2 parametrar också: filnamnet och en boolesk. Boolean anger om en befintlig fil ska läggas till eller skrivas över. Här är två Java FileWriter exempel som visar att:

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

FileWriter teckenkodning

FileWriter förutsätter att du vill koda byte till filen med standard teckenkodning för datorn programmet körs på. Det här kanske inte alltid är vad du vill, och du kan inte ändra det!

om du vill ange ett annat teckenkodningsschema, använd inte FileWriter. Använd en OutputStreamWriter på en FileOutputStream istället. Med OutputStreamWriter kan du ange teckenkodningsschemat som ska användas när du skriver byte till den underliggande filen.

skriv(int)

Java FileWriter write(int) metoden skriver den nedre 16 biten av int till destinationen FileWriter är ansluten till, som ett enda tecken. Här är ett exempel på att skriva ett enda tecken till en Java FileWriter:

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

skriv(char)

Java FileWriter har också EN write(char) – metod som kan skriva en rad tecken till destinationen FileWriter är ansluten till. Metoden write(char) returnerar antalet tecken som faktiskt skrivits till FileWriter. Här är ett exempel på att skriva en rad tecken till en Java FileWriter:

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

skrivprestanda

det är snabbare att skriva en rad tecken till en Java-Filskrivare än att skriva ett tecken i taget. Hastigheten kan vara ganska signifikant-upp till 10 x högre eller mer. Därför rekommenderas att använda write(char) – metoderna när det är möjligt.

den exakta hastigheten du får beror på det underliggande operativsystemet och hårdvaran på datorn du kör Java-koden på. Hastigheten beror på problem som minneshastighet, hårddiskhastighet och buffertstorlekar etc.

Transparent buffring via BufferedWriter

du kan få transparent buffring av byte skrivna till en Java FileWriter genom att linda in den i en Java BufferedWriter . Alla byte som skrivs till BufferedWriter kommer först att buffras inuti en intern byte-array i BufferedWriter. När bufferten är full spolas bufferten till den underliggande FileWriter på en gång. Här är ett exempel på att förpacka en Java FileWriter i en BufferedWriter:

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

du kan läsa mer om BufferedWriter i min BufferedWriter handledning.

spola ()

Java FileWriter’s flush() metod spolar alla data skrivna till FileWriter till den underliggande filen. Data kan buffras i OS-minnet någonstans, även om din Java-kod har skrivit den till FileWriter. Genom att ringa flush() kan du försäkra dig om att alla buffrade data spolas (skrivs) till disken. Här är ett exempel på att spola data skrivna till en Java FileWriter genom att ringa sin flush() – metod:

fileWriter.flush();

stänga en FileWriter

när du är klar med att skriva tecken till en Java FileWriter bör du komma ihåg att stänga den. Att stänga en FileWriter görs genom att anropa dess close() – metod. Så här stänger du en Java FileWriter ser ut:

fileWriter.close();

du kan också använda try-with-resources-konstruktionen som introducerades i Java 7. Så här använder du och stänger ett FileWriter – utseende med try-with-resources-konstruktionen:

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

Lämna ett svar

Din e-postadress kommer inte publiceras.