W tym samouczku dowiemy się o języku Java OutputStreamWriter i jego metodach na przykładach.
OutputStreamWriter
Klasa java.io
pakietu mogą być wykorzystywane do danych przekształceniu w postaci znaków na dane w postaci bajtów.
Rozszerza klasę abstrakcyjną Writer
.
OutputStreamWriter
Klasa współpracuje z innych strumieni wyjściowych. Jest również znany jako pomost między strumieniami bajtów i strumieniami znaków. Dzieje się tak, ponieważ OutputStreamWriter
konwertuje swoje znaki na bajty.
Na przykład niektóre znaki wymagają 2 bajtów, aby były przechowywane w pamięci. Aby zapisać takie dane, możemy użyć modułu zapisującego strumień wyjściowy, który konwertuje znak na odpowiednie bajty i przechowuje bajty razem.
Utwórz OutputStreamWriter
Aby utworzyć plik OutputStreamWriter
, musimy najpierw zaimportować java.io.OutputStreamWriter
pakiet. Po zaimportowaniu pakietu tutaj możemy utworzyć moduł zapisujący strumień wyjściowy.
// Creates an OutputStream FileOutputStream file = new FileOutputStream(String path); // Creates an OutputStreamWriter OutputStreamWriter output = new OutputStreamWriter(file);
W powyższym przykładzie utworzyliśmy OutputStreamWriter
nazwane wyjście wraz z FileOutputStream
nazwanym plikiem.
Tutaj używamy domyślnego kodowania znaków do zapisywania znaków w strumieniu wyjściowym.
Możemy jednak określić typ kodowania znaków ( UTF8 lub UTF16 ), które ma być używane do zapisywania danych.
// Creates an OutputStreamWriter specifying the character encoding OutputStreamWriter output = new OutputStreamWriter(file, Charset cs);
Tutaj użyliśmy tej Charset
klasy do określenia typu kodowania znaków.
Metody OutputStreamWriter
OutputStreamWriter
Klasa zawiera implementacje dla różnych sposobów przedstawienia w Writer
klasie.
write () Metoda
write()
- pisze pojedynczy znak do pisarzawrite(char() array)
- zapisuje znaki z określonej tablicy do modułu piszącegowrite(String data)
- zapisuje określony ciąg do programu zapisującego
Przykład: OutputStreamWriter, aby zapisać dane do pliku
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(); ) ) )
W powyższym przykładzie utworzyliśmy czytnik strumienia wyjściowego przy użyciu strumienia wyjściowego pliku. Czytnik strumienia wyjściowego jest powiązany z plikiem output.txt .
FileOutputStream file = new FileOutputStream("output.txt"); OutputStreamWriter output = new OutputStreamWriter(file);
Aby zapisać dane do pliku, skorzystaliśmy z write()
metody.
Tutaj, kiedy uruchamiamy program, plik output.txt jest wypełniony następującą treścią.
This is a line of text inside the file.
getEncoding () Metoda
Ta getEncoding()
metoda może służyć do pobierania typu kodowania używanego do zapisywania danych w strumieniu wyjściowym. Na przykład,
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(); ) ) )
Wynik
Kodowanie znaków wyjście1: Cp1252 Kodowanie znaków wyjście2: UTF8
W powyższym przykładzie utworzyliśmy 2 program zapisujący strumień wyjściowy o nazwach output1 i output2.
- output1 nie określa kodowania znaków. Dlatego
getEncoding()
metoda zwraca domyślne kodowanie znaków. - output2 określa kodowanie znaków, UTF8 . Dlatego
getEncoding()
metoda zwraca określone kodowanie znaków.
Uwaga : wykorzystaliśmy tę Charset.forName()
metodę, aby określić typ kodowania znaków. Aby dowiedzieć się więcej, odwiedź Java Charset (oficjalna dokumentacja Java).
close () Metoda
Aby zamknąć program zapisujący strumień wyjściowy, możemy użyć close()
metody. Po close()
wywołaniu metody nie możemy użyć programu zapisującego do zapisania danych.
Inne metody OutputStreamWriter
metoda | Opis |
---|---|
flush() | wymusza zapisanie wszystkich danych obecnych w programie zapisującym do odpowiedniego miejsca docelowego |
append() | wstawia określony znak do bieżącego modułu zapisującego |
Aby dowiedzieć się więcej, odwiedź stronę Java OutputStreamWriter (oficjalna dokumentacja Java).