třída Java FileWriter, java.io.FileWriter
, umožňuje zapisovat znaky do souboru. V tomto ohledu Java FileWriter funguje podobně jako FileOutputStream
kromě toho, že FileOutputStream
je byte na základě, vzhledem k tomu, že FileWriter
je znak založený. FileWriter
je určen k psaní textu, jinými slovy. Jeden znak může odpovídat jednomu nebo více bajtům, v závislosti na použitém schématu kódování znaků. Třída Java FileWriter
je mimochodem podtřída třídy Java Writer.
FileWriter Příklad
Zde je jednoduchý Java FileWriter
příklad:
Writer fileWriter = new FileWriter("data\filewriter.txt");fileWriter.write("data 1");fileWriter.write("data 2");fileWriter.write("data 3");fileWriter.close();
Poznámka: Správné zacházení s výjimkami zde bylo vynecháno kvůli přehlednosti. Chcete-li se dozvědět více o správném zacházení s výjimkami, přejděte na zpracování výjimek Java IO.
FileWriter
má také jiné konstruktory, což vám umožňuje určit soubor, do kterého chcete zapisovat různými způsoby. Podívejte se na oficiální JavaDoc pro podrobnější informace.
Přepsání vs. Připojením Souboru
Při vytváření Java FileWriter
můžete rozhodnout, zda chcete přepsat existující soubor se stejným názvem, nebo pokud se chcete připojit k existující soubor. Rozhodnete se, že výběrem toho, co FileWriter
Konstruktor používáte.
FileWriter
konstruktoru, přičemž jen jeden parametr, název souboru, přepíše stávající soubor:
Writer fileWriter = new FileWriter("c:\data\output.txt");
FileWriter
má konstruktor, který bere 2 parametry: název souboru a boolean. Boolean označuje, zda připojit nebo přepsat existující soubor. Zde jsou dva Java FileWriter
příklady, které ukazují, že:
Writer fileWriter = new FileWriter("c:\data\output.txt", true); //appends to fileWriter fileWriter = new FileWriter("c:\data\output.txt", false); //overwrites file
FileWriter Kódování Znaků
FileWriter
předpokládá, že chcete kódovat bajtů do souboru pomocí výchozí kódování znaků pro počítač je aplikace spuštěna. To nemusí být vždy to, co chcete, a nemůžete to změnit!
pokud chcete zadat jiné schéma kódování znaků, nepoužívejte FileWriter
. Místo toho použijte OutputStreamWriter
na FileOutputStream
. OutputStreamWriter
umožňuje zadat schéma kódování znaků, které se použije při zápisu bajtů do podkladového souboru.
write(int)
Java FileWriter
write(int)
metoda píše dolních 16 bitů int
cíl FileWriter
je připojen k, a to jako jeden znak. Zde je příklad zápisu jednoho znaku do Java FileWriter
:
FileWriter fileWriter = new FileWriter("data/output.txt");fileWriter.write('A');
write(char)
Java FileWriter
má také write(char)
metoda, která může psát pole znaků k určení FileWriter
je připojen. Metoda write(char)
vrací počet znaků skutečně zapsaných do FileWriter
. Zde je příklad psaní pole znaků Java FileWriter
:
FileWriter fileWriter = new FileWriter("data/output.txt");char chars = new char{'A','B','C','D','E'};fileWriter.write(chars);
Napište Výkonu
To je rychlejší psát pole znaků Java FileWriter než psát jeden znak najednou. Zrychlení může být docela významné-až 10 x vyšší nebo více. Proto se doporučuje používat metody write(char)
, kdykoli je to možné.
přesné zrychlení, které získáte, závisí na základním operačním systému a hardwaru počítače, na kterém spouštíte kód Java. Zrychlení závisí na problémech, jako je rychlost paměti, rychlost pevného disku a velikosti vyrovnávací paměti atd.
můžete získat transparentní ukládání do vyrovnávací paměti bajtů zapsaných do Java FileWriter
obtékání v Java BufferedWriter . Všechny bajty zapsané do BufferedWriter
se nejprve uloží do vyrovnávací paměti uvnitř interního pole bajtů v BufferedWriter
. Když je vyrovnávací paměť plná, vyrovnávací paměť se propláchne na podkladovou hodnotu FileWriter
najednou. Zde je příklad zabalení Java FileWriter
do a BufferedWriter
:
int bufferSize = 8 * 1024;Writer writer = new BufferedWriter( new FileWriter("c:\data\output-file.txt"), bufferSize );
více o BufferedWriter
si můžete přečíst v mém tutoriálu BufferedWriter.
flush ()
metoda Java FileWriter
‚s flush()
propláchne všechna data zapsaná do FileWriter
do podkladového souboru. Data mohou být někde uložena do paměti OS, i když je váš kód Java zapsal do FileWriter
. Voláním flush()
se můžete ujistit, že všechna uložená data budou propláchnuta (zapsána) na disk. Zde je příklad splachování data zapsána do Java FileWriter
tím, že volá jeho flush()
metoda:
fileWriter.flush();
Uzavření FileWriter
Když jste hotovi psaní znaků Java FileWriter
pamatujte, zavřete jej. Uzavření FileWriter
se provádí voláním metody close()
. Zde je, jak uzavření Java FileWriter
vypadá:
fileWriter.close();
můžete také použít try-with-resources construct představil v Java 7. Zde je návod, jak použít a zavřít vzhled FileWriter
pomocí konstrukce try-with-resources:
try(FileWriter fileWriter = new FileWriter("data\filewriter.txt") ){ fileWriter.write("data 1"); fileWriter.write("data 2"); fileWriter.write("data 3");}