V tomto výukovém programu se na příkladech seznámíme s Java OutputStreamWriter a jeho metodami.
OutputStreamWriter
Třída java.io
obalu lze použít pro převod dat ve formě znaku do dat v bytech formě.
Rozšiřuje abstraktní třídu Writer
.
OutputStreamWriter
Třída spolupracuje s jinými výstupními proudy. Je také známý jako most mezi bajtovými a znakovými toky. Je to proto, že OutputStreamWriter
převádí své znaky na bajty.
Některé znaky například vyžadují, aby byly v úložišti uloženy 2 bajty. K zápisu takových dat můžeme použít zapisovač výstupního proudu, který převádí znak na odpovídající bajty a bajty společně ukládá.
Vytvořte OutputStreamWriter
Abychom mohli vytvořit OutputStreamWriter
, musíme java.io.OutputStreamWriter
nejprve importovat balíček. Jakmile importujeme balíček, je zde způsob, jak můžeme vytvořit zapisovač výstupního proudu.
// Creates an OutputStream FileOutputStream file = new FileOutputStream(String path); // Creates an OutputStreamWriter OutputStreamWriter output = new OutputStreamWriter(file);
Ve výše uvedeném příkladu jsme vytvořili OutputStreamWriter
pojmenovaný výstup spolu s FileOutputStream
pojmenovaným souborem.
Zde používáme výchozí kódování znaků k zápisu znaků do výstupního proudu.
Můžeme však určit typ kódování znaků ( UTF8 nebo UTF16 ), který se má použít k zápisu dat.
// Creates an OutputStreamWriter specifying the character encoding OutputStreamWriter output = new OutputStreamWriter(file, Charset cs);
Zde jsme použili Charset
třídu k určení typu kódování znaků.
Metody OutputStreamWriter
OutputStreamWriter
Třída poskytuje implementace pro různé metody prezentovat ve Writer
třídě.
metoda write ()
write()
- zapíše spisovateli jeden znakwrite(char() array)
- zapíše znaky ze zadaného pole do zapisovačewrite(String data)
- zapíše zadaný řetězec do zapisovače
Příklad: OutputStreamWriter pro zápis dat do souboru
import java.io.FileOutputStream; import java.io.OutputStreamWriter; public class Main ( public static void main(String args()) ( String data = "This is a line of text inside the file."; try ( // Creates a FileOutputStream FileOutputStream file = new FileOutputStream("output.txt"); // Creates an OutputStreamWriter OutputStreamWriter output = new OutputStreamWriter(file); // Writes string to the file output.write(data); // Closes the writer output.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Ve výše uvedeném příkladu jsme vytvořili čtečku výstupního proudu pomocí výstupního proudu souboru. Čtečka výstupního proudu je propojena se souborem output.txt .
FileOutputStream file = new FileOutputStream("output.txt"); OutputStreamWriter output = new OutputStreamWriter(file);
K zápisu dat do souboru jsme použili write()
metodu.
Tady, když spustíme program, je soubor output.txt naplněn následujícím obsahem.
This is a line of text inside the file.
Metoda getEncoding ()
getEncoding()
Způsob může být použit k získání typ kódování, které se používá k zápisu dat do výstupního proudu. Například,
import java.io.OutputStreamWriter; import java.nio.charset.Charset; import java.io.FileOutputStream; class Main ( public static void main(String() args) ( try ( // Creates an output stream FileOutputStream file = new FileOutputStream("output.txt"); // Creates an output stream reader with default encoding OutputStreamWriter output1 = new OutputStreamWriter(file); // Creates an output stream reader specifying the encoding OutputStreamWriter output2 = new OutputStreamWriter(file, Charset.forName("UTF8")); // Returns the character encoding of the output stream System.out.println("Character encoding of output1: " + output1.getEncoding()); System.out.println("Character encoding of output2: " + output2.getEncoding()); // Closes the reader output1.close(); output2.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) )
Výstup
Kódování znaků výstupu1: Cp1252 Kódování znaků výstupu2: UTF8
Ve výše uvedeném příkladu jsme vytvořili 2 zapisovač výstupního proudu s názvem output1 a output2.
- output1 neurčuje kódování znaků. Proto
getEncoding()
metoda vrací výchozí kódování znaků. - output2 určuje kódování znaků, UTF8 . Proto
getEncoding()
metoda vrací zadané kódování znaků.
Poznámka : Charset.forName()
Metodu jsme použili k určení typu kódování znaků. Chcete-li se dozvědět více, navštivte Java Charset (oficiální dokumentace Java).
metoda close ()
Chcete-li zavřít zapisovač výstupního proudu, můžeme použít close()
metodu. Jakmile je close()
metoda volána, nemůžeme použít zapisovač k zápisu dat.
Další metody OutputStreamWriter
Metoda | Popis |
---|---|
flush() | nutí zapsat všechna data přítomná ve vypalovačce do odpovídajícího cíle |
append() | vloží zadaný znak do aktuálního zapisovače |
Další informace najdete v Java OutputStreamWriter (oficiální dokumentace Java).