Ebben az oktatóanyagban példák segítségével megismerhetjük a Java OutputStreamWritert és annak módszereit.
A csomag OutputStreamWriter
osztálya java.io
felhasználható a karakteres adatok konvertálására bájt formátumú adatokká.
Kiterjeszti az absztrakt osztályt Writer
.
Az OutputStreamWriter
osztály más kimeneti adatfolyamokkal működik. Hídként is ismert a bájtfolyamok és a karakterfolyamok között. Ennek az az oka, OutputStreamWriter
hogy karaktereit bájtokká alakítja.
Egyes karakterek például 2 bájtot igényelnek a tárolóban. Ilyen adatok megírásához használhatjuk a kimeneti adatfolyam írót, amely a karaktert megfelelő bájtokká alakítja és együtt tárolja a bájtokat.
Hozzon létre egy OutputStreamWritert
A létrehozásához először OutputStreamWriter
importálnunk kell a java.io.OutputStreamWriter
csomagot. A csomag importálása után itt hozhatjuk létre az output stream írót.
// Creates an OutputStream FileOutputStream file = new FileOutputStream(String path); // Creates an OutputStreamWriter OutputStreamWriter output = new OutputStreamWriter(file);
A fenti példában létrehoztunk egy OutputStreamWriter
megnevezett kimenetet a FileOutputStream
megnevezett fájllal együtt.
Itt az alapértelmezett karakterkódolást használjuk karakterek írására a kimeneti adatfolyamba.
Megadhatjuk azonban az adatíráshoz használandó karakterkódolás típusát ( UTF8 vagy UTF16 ).
// Creates an OutputStreamWriter specifying the character encoding OutputStreamWriter output = new OutputStreamWriter(file, Charset cs);
Itt az Charset
osztályt használtuk a karakterkódolás típusának megadására.
Az OutputStreamWriter módszerei
Az OutputStreamWriter
osztály megvalósításokat biztosít az Writer
osztályban jelen lévő különböző módszerek számára .
write () módszer
write()
- egyetlen karaktert ír az írónakwrite(char() array)
- írja a karaktereket a megadott tömbből az írónakwrite(String data)
- írja a megadott karakterláncot az írónak
Példa: OutputStreamWriter adatok írására egy fájlba
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(); ) ) )
A fenti példában létrehoztunk egy kimeneti adatfolyam-olvasót a fájl kimeneti adatfolyamának felhasználásával. A kimeneti adatfolyam-olvasó össze van kapcsolva az output.txt fájllal.
FileOutputStream file = new FileOutputStream("output.txt"); OutputStreamWriter output = new OutputStreamWriter(file);
Adatok írására a fájlba a write()
módszert használtuk .
Itt, amikor futtatjuk a programot, az output.txt fájl a következő tartalommal töltődik fel.
This is a line of text inside the file.
getEncoding () metódus
A getEncoding()
módszer felhasználható arra, hogy megkapja azt a kódolási típust, amellyel adatokat írunk a kimeneti adatfolyamba. Például,
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(); ) ) )
Kimenet
Az output1 karakterkódolása: Cp1252 A output2 karakterkódolása: UTF8
A fenti példában létrehoztunk 2 output1 írót output1 és output2 néven.
- Az output1 nem adja meg a karakterkódolást. Ezért a
getEncoding()
metódus az alapértelmezett karakterkódolást adja vissza. - Az output2 megadja az UTF8 karakterkódolást . Ezért a
getEncoding()
metódus visszaadja a megadott karakterkódolást.
Megjegyzés : A Charset.forName()
karakterkódolás típusának meghatározásához a módszert használtuk . További információkért látogasson el a Java Charset (hivatalos Java dokumentáció) oldalra.
bezár () módszer
A kimeneti adatfolyam író bezárásához használhatjuk a close()
módszert. Miután close()
meghívta a módszert, nem használhatjuk az írót az adatok megírásához.
Az OutputStreamWriter egyéb módszerei
Módszer | Leírás |
---|---|
flush() | arra kényszeríti, hogy az íróban található összes adatot a megfelelő rendeltetési helyre írja |
append() | beszúrja a megadott karaktert az aktuális íróba |
További információkért látogasson el a Java OutputStreamWriter oldalra (hivatalos Java dokumentáció).