Java InputStreamReader (z przykładami)

W tym samouczku, na przykładach, nauczymy się języka Java InputStreamReader i jego metod.

InputStreamReaderKlasa java.iopakietu można wykorzystać do konwersji danych w bajtach na dane w znakach.

Rozszerza klasę abstrakcyjną Reader.

InputStreamReaderKlasa współpracuje z innymi strumieniami wejściowymi. Jest również znany jako pomost między strumieniami bajtów i strumieniami znaków. Dzieje się tak, ponieważ InputStreamReaderodczytuje bajty ze strumienia wejściowego jako znaki.

Na przykład niektóre znaki wymagały przechowywania w pamięci 2 bajtów. Aby odczytać takie dane, możemy użyć czytnika strumienia wejściowego, który odczytuje razem 2 bajty i konwertuje na odpowiedni znak.

Utwórz InputStreamReader

Aby utworzyć plik InputStreamReader, musimy najpierw zaimportować java.io.InputStreamReaderpakiet. Po zaimportowaniu pakietu tutaj, możemy utworzyć czytnik strumienia wejściowego.

 // Creates an InputStream FileInputStream file = new FileInputStream(String path); // Creates an InputStreamReader InputStreamReader input = new InputStreamReader(file); 

W powyższym przykładzie utworzyliśmy InputStreamReadernazwane wejście wraz z FileInputStreamnazwanym plikiem.

Tutaj dane w pliku są przechowywane przy użyciu domyślnego kodowania znaków.

W pliku możemy jednak określić również typ kodowania znaków ( UTF8 lub UTF16 ).

 // Creates an InputStreamReader specifying the character encoding InputStreamReader input = new InputStreamReader(file, Charset cs); 

Tutaj użyliśmy Charsetklasy do określenia kodowania znaków w pliku.

Metody InputStreamReader

InputStreamReaderKlasa zawiera implementacje dla różnych sposobów przedstawienia w Readerklasie.

read () Metoda

  • read() - odczytuje pojedynczy znak z czytnika
  • read(char() array) - odczytuje znaki z czytnika i przechowuje w określonej tablicy
  • read(char() array, int start, int length) - odczytuje liczbę znaków równą długości z czytnika i zapisuje w określonej tablicy zaczynając od początku

Na przykład załóżmy, że mamy plik o nazwie input.txt z następującą zawartością.

 This is a line of text inside the file. 

Spróbujmy odczytać ten plik za pomocą InputStreamReader.

 import java.io.InputStreamReader; import java.io.FileInputStream; class Main ( public static void main(String() args) ( // Creates an array of character char() array = new char(100); try ( // Creates a FileInputStream FileInputStream file = new FileInputStream("input.txt"); // Creates an InputStreamReader InputStreamReader input = new InputStreamReader(file); // Reads characters from the file input.read(array); System.out.println("Data in the stream:"); System.out.println(array); // Closes the reader input.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) ) 

Wynik

 Dane w strumieniu: jest to wiersz tekstu w pliku. 

W powyższym przykładzie utworzyliśmy czytnik strumienia wejściowego przy użyciu strumienia wejściowego pliku. Czytnik strumienia wejściowego jest powiązany z plikiem input.txt .

  FileInputStream file = new FileInputStream("input.txt"); InputStreamReader input = new InputStreamReader(file); 

Aby odczytać znaki z pliku, użyliśmy read()metody.

getEncoding () Metoda

getEncoding()Metoda może być stosowana, aby uzyskać rodzaj kodowania, który jest używany do przechowywania danych w strumieniu wejściowym. Na przykład,

 import java.io.InputStreamReader; import java.nio.charset.Charset; import java.io.FileInputStream; class Main ( public static void main(String() args) ( try ( // Creates a FileInputStream FileInputStream file = new FileInputStream("input.txt"); // Creates an InputStreamReader with default encoding InputStreamReader input1 = new InputStreamReader(file); // Creates an InputStreamReader specifying the encoding InputStreamReader input2 = new InputStreamReader(file, Charset.forName("UTF8")); // Returns the character encoding of the input stream System.out.println("Character encoding of input1: " + input1.getEncoding()); System.out.println("Character encoding of input2: " + input2.getEncoding()); // Closes the reader input1.close(); input2.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) ) 

Wynik

 Kodowanie znaków input1: Cp1252 Kodowanie znaków input2: UTF8 

W powyższym przykładzie utworzyliśmy 2 czytniki strumienia wejściowego o nazwach input1 i input2.

  • input1 nie określa kodowania znaków. Dlatego getEncoding()metoda zwraca nazwę kanoniczną domyślnego kodowania znaków.
  • input2 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ąć czytnik strumienia wejściowego, możemy skorzystać z close()metody. Po close()wywołaniu metody nie możemy użyć czytnika do odczytu danych.

Inne metody InputStreamReader

metoda Opis
ready() sprawdza, czy strumień jest gotowy do odczytu
mark() zaznacz pozycję w strumieniu, do której zostały odczytane dane
reset() zwraca formant do punktu w strumieniu, w którym ustawiono znacznik

Aby dowiedzieć się więcej, odwiedź stronę Java InputStreamReader (oficjalna dokumentacja Java).

Interesujące artykuły...