Java OutputStreamWriter (z przykładami)

W tym samouczku dowiemy się o języku Java OutputStreamWriter i jego metodach na przykładach.

OutputStreamWriterKlasa java.iopakietu mogą być wykorzystywane do danych przekształceniu w postaci znaków na dane w postaci bajtów.

Rozszerza klasę abstrakcyjną Writer.

OutputStreamWriterKlasa 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ż OutputStreamWriterkonwertuje 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.OutputStreamWriterpakiet. 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 OutputStreamWriternazwane wyjście wraz z FileOutputStreamnazwanym 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 Charsetklasy do określenia typu kodowania znaków.

Metody OutputStreamWriter

OutputStreamWriterKlasa zawiera implementacje dla różnych sposobów przedstawienia w Writerklasie.

write () Metoda

  • write() - pisze pojedynczy znak do pisarza
  • write(char() array) - zapisuje znaki z określonej tablicy do modułu piszącego
  • write(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).

Interesujące artykuły...