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");}