a Java FileWriter osztály, java.io.FileWriter
lehetővé teszi karakterek írását egy fájlba. Ebben a tekintetben a Java FileWriter hasonlóan működik, mint a FileOutputStream
azzal a különbséggel, hogy a FileOutputStream
bájt alapú, míg a FileWriter
karakter alapú. A FileWriter
szöveg írására szolgál, más szóval. Egy karakter megfelelhet egy vagy több bájtnak, a használt karakterkódolási sémától függően. A Java FileWriter
osztály egyébként a Java Writer osztály alosztálya.
FileWriter Example
itt van egy egyszerű Java FileWriter
example:
Writer fileWriter = new FileWriter("data\filewriter.txt");fileWriter.write("data 1");fileWriter.write("data 2");fileWriter.write("data 3");fileWriter.close();
Megjegyzés: Az egyértelműség kedvéért itt kihagytuk a megfelelő kivételkezelést. Ha többet szeretne megtudni a kivétel helyes kezeléséről, látogasson el a Java Io kivételkezelés oldalra.
a FileWriter
– nak más konstruktorai is vannak, lehetővé téve a fájl különböző módon történő megadását. További információkért keresse meg a hivatalos JavaDoc-ot.
felülírás vs.Fájl hozzáfűzése
Java FileWriter
létrehozásakor eldöntheti, hogy felülírja-e az azonos nevű meglévő fájlokat, vagy hozzá kíván-e fűzni egy meglévő fájlt. Úgy dönt, hogy kiválasztja ,hogy melyik FileWriter
konstruktort használja.
a FileWriter
konstruktor csak egy paramétert, a fájlnevet vesz fel, felülír minden létező fájlt:
Writer fileWriter = new FileWriter("c:\data\output.txt");
FileWriter
van egy konstruktora, amely 2 paramétert is tartalmaz: a fájl nevét és egy logikai értéket. A logikai érték jelzi, hogy hozzáfűzni vagy felülírni egy meglévő fájlt. Itt van két Java FileWriter
példa arra, hogy:
Writer fileWriter = new FileWriter("c:\data\output.txt", true); //appends to fileWriter fileWriter = new FileWriter("c:\data\output.txt", false); //overwrites file
FileWriter karakterkódolás
a FileWriter
feltételezi, hogy a bájtokat a fájlba az alapértelmezett karakterkódolással kívánja kódolni annak a számítógépnek, amelyen az alkalmazás fut. Lehet, hogy ez nem mindig az, amit akarsz, és nem tudod megváltoztatni!
ha más karakterkódolási sémát szeretne megadni, ne használjon FileWriter
értéket. Használja a OutputStreamWriter
értéket a FileOutputStream
helyett. A OutputStreamWriter
segítségével megadhatja a karakterkódolási sémát, amelyet használni kell, amikor bájtokat ír az alapul szolgáló fájlba.
write(int)
a Java FileWriter
write(int)
metódus a int
alsó 16 bitjét írja a rendeltetési helyre, amelyhez a FileWriter
kapcsolódik, egyetlen karakterként. Itt van egy példa egyetlen karakter írására Java FileWriter
:
FileWriter fileWriter = new FileWriter("data/output.txt");fileWriter.write('A');
write(char)
a Java FileWriter
rendelkezik egy write(char)
metódussal is, amely karaktersorozatot tud írni a rendeltetési helyre, amelyhez a FileWriter
csatlakozik. A write(char)
metódus a ténylegesen írt karakterek számát adja vissza a FileWriter
– hoz. Itt van egy példa az írás egy tömb karakter egy Java FileWriter
:
FileWriter fileWriter = new FileWriter("data/output.txt");char chars = new char{'A','B','C','D','E'};fileWriter.write(chars);
írási teljesítmény
gyorsabb karakterek tömbjét írni egy Java Fájlíróba, mint egyszerre egy karaktert írni. A gyorsulás meglehetősen jelentős lehet-akár 10-szer magasabb vagy annál is nagyobb. Ezért ajánlott a write(char)
módszerek használata, amikor csak lehetséges.
a pontos gyorsítás a Java kódot futtató számítógép mögöttes operációs rendszerétől és hardverétől függ. A gyorsítás olyan kérdésektől függ, mint a memória sebessége, a merevlemez sebessége és a puffer mérete stb.
átlátszó pufferelés a BufferedWriter segítségével
a Java FileWriter
– ra írt bájtok átlátszó pufferelését egy Java Bufferedwriterbe csomagolva kaphatja meg . A BufferedWriter
– be írt összes bájt először egy belső bájttömbben lesz pufferelve a BufferedWriter
– ben. Amikor a puffer megtelt, a puffert egyszerre öblítik az alapul szolgáló FileWriter
értékre. Itt van egy példa a Java FileWriter
csomagolására a BufferedWriter
:
int bufferSize = 8 * 1024;Writer writer = new BufferedWriter( new FileWriter("c:\data\output-file.txt"), bufferSize );
a BufferedWriter
– ről bővebben a BufferedWriter bemutatómban olvashatsz.
flush()
a Java FileWriter
flush()
metódusa a FileWriter
fájlba írt összes adatot átöblíti az alapul szolgáló fájlba. Az adatok valahol az operációs rendszer memóriájában pufferelhetők, még akkor is, ha a Java kódja a FileWriter
– ra írta. A flush()
hívásával biztosíthatja, hogy a pufferelt adatok a lemezre kerülnek. Íme egy példa a Java FileWriter
– ra írt adatok öblítésére a flush()
metódus meghívásával:
fileWriter.flush();
FileWriter bezárása
amikor befejezte a karakterek írását egy Java-ba FileWriter
ne felejtse el bezárni. A FileWriter
bezárása a close()
metódus meghívásával történik. Így néz ki a Java FileWriter
bezárása:
fileWriter.close();
használhatja a Java 7-ben bevezetett try-with-resources konstrukciót is. Itt van, hogyan kell használni, és zárja be a FileWriter
néz ki a try-with-resources konstrukció:
try(FileWriter fileWriter = new FileWriter("data\filewriter.txt") ){ fileWriter.write("data 1"); fileWriter.write("data 2"); fileWriter.write("data 3");}