Java FileWriter

Java FileWriter-luokka, java.io.FileWriter, mahdollistaa merkkien kirjoittamisen tiedostoon. Tässä suhteessa Java FileWriter toimii pitkälti kuten FileOutputStream, paitsi että FileOutputStream on tavupohjainen, kun taas FileWriter on merkkipohjainen. FileWriter on siis tarkoitettu tekstin kirjoittamiseen. Yksi merkki voi vastata yhtä tai useampaa tavua, riippuen käytössä olevasta merkkikoodausjärjestelmästä. Java FileWriter-luokka on muuten Java Writer-luokan aliluokka.

FileWriter 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();

Huomaa: Varsinainen poikkeuskäsittely on tässä ohitettu selkeyden vuoksi. Jos haluat oppia lisää oikeasta poikkeuskäsittelystä, siirry osoitteeseen Java IO:n poikkeuskäsittely.

FileWriter:llä on myös muita konstruktoreita, joiden avulla voit määrittää tiedoston, johon kirjoitetaan, eri tavoin. Katso tarkemmat tiedot virallisesta JavaDocista.

Oversriting vs. Appending the File

Kun luot Java FileWriter:n, voit päättää, haluatko ylikirjoittaa minkä tahansa olemassa olevan tiedoston, jolla on sama nimi, vai haluatko liittää sen johonkin olemassa olevaan tiedostoon. Päätät tämän valitsemalla, mitä FileWriter-konstruktoria käytät.

FileWriter-konstruktori, joka ottaa vain yhden parametrin, tiedoston nimen, korvaa minkä tahansa olemassa olevan tiedoston:

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

FileWriter:lla on konstruktori, joka ottaa myös kaksi parametria: Tiedoston nimi ja boolean. Boolean ilmoittaa, liitetäänkö vai ylikirjoitetaanko olemassa oleva tiedosto. Tässä on kaksi Java FileWriter -esimerkkiä, jotka osoittavat tämän:

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 olettaa, että haluat koodata tiedostoon syötettävät tavut käyttäen sen tietokoneen oletusarvoista merkkikoodausta, jossa sovelluksesi toimii. Tämä ei välttämättä ole aina sitä, mitä haluat, etkä voi muuttaa sitä!

Jos haluat määrittää toisenlaisen merkkikoodausjärjestelmän, älä käytä FileWriter. Käytä sen sijaan OutputStreamWriter:ää FileOutputStream:ssä. OutputStreamWriter:n avulla voit määrittää merkkikoodausjärjestelmän, jota käytetään kirjoitettaessa tavuja taustalla olevaan tiedostoon.

write(int)

Javan FileWriter write(int)-metodi kirjoittaa FileWriter:n write(int):n alemman 16-bittisen int:n yksittäisenä merkkinä määränpäähän, johon FileWriter:llä on yhteys. Tässä on esimerkki yksittäisen merkin kirjoittamisesta Java FileWriter:

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

write(char)

Java FileWriter:ssä on myös write(char)-metodi, joka voi kirjoittaa merkkimäärän kohteeseen, johon FileWriter on liitetty. Metodi write(char) palauttaa FileWriter:lle todella kirjoitettujen merkkien määrän. Tässä on esimerkki merkkimäärän kirjoittamisesta Java FileWriter:

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

Kirjoitussuorituskyky

Merkkimäärän kirjoittaminen Java FileWriteriin on nopeampaa kuin yhden merkin kirjoittaminen kerrallaan. Nopeutuminen 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 saavutettava nopeuslisä riippuu tietokoneen käyttöjärjestelmästä ja laitteistosta, jolla Java-koodia ajetaan. Nopeuslisäys riippuu muun muassa muistin nopeudesta, kiintolevyn nopeudesta ja puskurikokojen koosta jne.

Transparentti puskurointi BufferedWriterin avulla

Voit saada läpinäkyvän puskuroinnin tavuille, jotka on kirjoitettu Java FileWriter:een, kietomalla sen Java BufferedWriteriin . Kaikki BufferedWriter:een kirjoitetut tavut puskuroidaan ensin BufferedWriter:n sisäiseen tavujoukkoon. Kun puskuri on täynnä, puskuri tyhjennetään kerralla taustalla olevaan FileWriter:ään. Tässä on esimerkki Java FileWriter:n käärimisestä BufferedWriter:

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

Voit lukea lisää BufferedWriter:stä BufferedWriter-oppaastani.

flush()

Java FileWriter:n flush()-metodi huuhtoo kaiken FileWriter:iin kirjoitetun datan taustalla olevaan tiedostoon. Tiedot saattavat olla puskuroituna jossain käyttöjärjestelmän muistissa, vaikka Java-koodisi olisi kirjoittanut ne FileWriter:lle. Kutsumalla flush() voit varmistaa, että kaikki puskuroitu data huuhdellaan (kirjoitetaan) levylle. Tässä on esimerkki Java-FileWriter:lle kirjoitetun datan huuhtomisesta kutsumalla sen flush()-metodia:

fileWriter.flush();

FileWriterin sulkeminen

Kun olet lopettanut merkkien kirjoittamisen Java-FileWriter:lle, sinun kannattaa muistaa sulkea se. FileWriter:n sulkeminen tapahtuu kutsumalla sen close()-metodia. Näin näyttää Java FileWriter:n sulkeminen:

fileWriter.close();

Voit myös käyttää Java 7:ssä käyttöön otettua try-with-resources -konstruktiota. Tältä näyttää FileWriter:n käyttö ja sulkeminen try-with-resources -konstruktion avulla:

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

Leave a Reply