Java FileWriter-Luokka, java.io.FileWriter
, mahdollistaa merkkien kirjoittamisen tiedostoon. Tässä suhteessa Java FileWriter toimii pitkälti FileOutputStream
: n tavoin, paitsi että a FileOutputStream
on tavupohjainen, kun taas a FileWriter
on merkkipohjainen. FileWriter
on tarkoitettu tekstin kirjoittamiseen, toisin sanoen. Yksi merkki voi vastata yhtä tai useampaa tavua riippuen käytössä olevasta merkistökoodausjärjestelmästä. Java FileWriter
– luokka on Javan Kirjoittajaluokan alaluokka.
Filewriterin esimerkki
tässä on yksinkertainen Java FileWriter
esimerkki:
Writer fileWriter = new FileWriter("data\filewriter.txt");fileWriter.write("data 1");fileWriter.write("data 2");fileWriter.write("data 3");fileWriter.close();
Huomautus: Poikkeusten asianmukainen käsittely on jätetty tässä selvyyden vuoksi väliin. Lisätietoja poikkeusten oikeasta käsittelystä on Java IO poikkeusten käsittelystä.
FileWriter
: llä on myös muita konstruktioita, joiden avulla voit määrittää kirjoitettavan tiedoston eri tavoin. Katso lisätietoja viralliselta Javadocilta.
Ylikirjoittaminen vs. tiedoston liittäminen
kun luot Java FileWriter
voit päättää, haluatko korvata minkä tahansa olemassa olevan tiedoston, jolla on sama nimi, vai haluatko liittää johonkin olemassa olevaan tiedostoon. Päätät, että valitsemalla mitä FileWriter
rakentaja käytät.
FileWriter
konstruktori, joka ottaa vain yhden parametrin, tiedostonimen, korvaa minkä tahansa olemassa olevan tiedoston:
Writer fileWriter = new FileWriter("c:\data\output.txt");
FileWriter
on rakentaja, joka ottaa 2 parametrit liian: tiedoston nimi ja boolean. Boolean ilmaisee, lisätäänkö vai korvataanko olemassa oleva tiedosto. Tässä on kaksi Java FileWriter
– esimerkkiä, jotka osoittavat, että:
Writer fileWriter = new FileWriter("c:\data\output.txt", true); //appends to fileWriter fileWriter = new FileWriter("c:\data\output.txt", false); //overwrites file
FileWriter-merkistökoodaus
FileWriter
olettaa, että haluat koodata tiedoston tavut käyttämällä oletusmerkkikoodausta sille tietokoneelle, jossa sovelluksesi on käynnissä. Tämä ei välttämättä aina ole sitä, mitä haluat, etkä voi muuttaa sitä!
jos haluat määrittää erilaisen merkistökoodauksen, älä käytä FileWriter
– merkkiä. Käytä OutputStreamWriter
sen sijaan FileOutputStream
. OutputStreamWriter
voit määrittää merkistökoodausohjelman, jota käytetään kirjoitettaessa tavuja taustalla olevaan tiedostoon.
write (int)
Java FileWriter
write(int)
– menetelmä kirjoittaa int
alempaa 16 bittiä kohteeseen, johon FileWriter
on liitetty, yhtenä merkkinä. Tässä on esimerkki yhden merkin kirjoittamisesta Jaavalle FileWriter
:
FileWriter fileWriter = new FileWriter("data/output.txt");fileWriter.write('A');
write(char)
Javalla FileWriter
on myös write(char)
– menetelmä, jolla voidaan kirjoittaa joukko merkkejä kohteeseen, johon FileWriter
on liitetty. write(char)
– menetelmä palauttaa FileWriter
: ään kirjoitettujen merkkien määrän. Tässä on esimerkki kirjallisesti joukko merkkejä Java FileWriter
:
FileWriter fileWriter = new FileWriter("data/output.txt");char chars = new char{'A','B','C','D','E'};fileWriter.write(chars);
kirjoitusteho
Java-Fileeraajalle on nopeampaa kirjoittaa joukko merkkejä kuin kirjoittaa yksi merkki kerrallaan. Speedup voi olla melko merkittävä – jopa 10 x suurempi tai enemmän. Siksi on suositeltavaa käyttää write(char)
– menetelmiä aina kun se on mahdollista.
tarkka ajonopeus riippuu sen tietokoneen käyttöjärjestelmästä ja laitteistosta, jolla käytät Java-koodia. Speedup riippuu tämmöisestä muistin nopeudesta, kiintolevyn nopeudesta ja puskurikooista jne.
läpinäkyvä puskurointi Bufferedwriterin kautta
Java FileWriter
: lle kirjoitettujen tavujen läpinäkyvän puskuroinnin saa käärimällä sen Java-Puskuriohjelmaan . Kaikki BufferedWriter
: lle kirjoitetut tavut puskuroidaan ensin BufferedWriter
: n sisäisen tavuryhmän sisään. Kun puskuri on täynnä, puskuri huuhtoutuu kohde-etuuteen FileWriter
kerralla. Tässä on esimerkki Jaavan FileWriter
käärimisestä a BufferedWriter
:
int bufferSize = 8 * 1024;Writer writer = new BufferedWriter( new FileWriter("c:\data\output-file.txt"), bufferSize );
voit lukea lisää BufferedWriter
: stä BufferedWriter-opetusohjelmastani.
huuhtelu ()
Java FileWriter
’s flush()
– menetelmä huuhtoo kaikki FileWriter
– tiedostoon kirjoitetut tiedot taustalla olevaan tiedostoon. Tiedot saattavat puskuroitua käyttöjärjestelmän muistiin jonnekin, vaikka Java-koodisi olisi kirjoittanut sen FileWriter
: lle. Soittamalla flush()
voit varmistaa, että kaikki puskuroidut tiedot huuhtoutuvat (kirjoitettuna) levylle. Tässä on esimerkki huuhteludatasta kirjoitettuna Java FileWriter
: lle kutsumalla sen flush()
– menetelmää:
fileWriter.flush();
FileWriter
kun olet valmis kirjoittamaan merkkejä Java FileWriter
sinun pitäisi muistaa sulkea se. FileWriter
sulkeminen tapahtuu kutsumalla sen close()
– menetelmää. Tältä näyttää Javan sulkeminen FileWriter
:
fileWriter.close();
Voit myös käyttää Java 7: ssä esitettyä try-with-resources-konstruktiota. Näin voit käyttää ja sulkea FileWriter
– mallia try-with-resources-konstruktiolla:
try(FileWriter fileWriter = new FileWriter("data\filewriter.txt") ){ fileWriter.write("data 1"); fileWriter.write("data 2"); fileWriter.write("data 3");}