Java InputStreamReader (cu exemple)

În acest tutorial, vom afla despre Java InputStreamReader și metodele sale cu ajutorul exemplelor.

InputStreamReaderClasa a java.iopachetului poate fi folosit pentru a converti datele în octeți în date în caractere.

Extinde clasa abstractă Reader.

InputStreamReaderClasă lucrează cu alte fluxuri de intrare. Este, de asemenea, cunoscut ca o punte între fluxurile de octeți și fluxurile de caractere. Acest lucru se datorează faptului că InputStreamReadercitirea octeților din fluxul de intrare ca caractere.

De exemplu, unele caractere au necesitat 2 octeți pentru a fi stocate în stocare. Pentru a citi astfel de date putem folosi cititorul fluxului de intrare care citește împreună cei 2 octeți și se transformă în caracterul corespunzător.

Creați un InputStreamReader

Pentru a crea un InputStreamReader, trebuie mai java.io.InputStreamReaderîntâi să importăm pachetul. Odată ce am importat pachetul, iată cum putem crea cititorul fluxului de intrare.

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

În exemplul de mai sus, am creat o InputStreamReaderintrare numită împreună cu FileInputStreamfișierul numit.

Aici, datele din fișier sunt stocate utilizând o codificare implicită a caracterelor.

Cu toate acestea, putem specifica și tipul de codificare a caracterelor ( UTF8 sau UTF16 ) în fișier.

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

Aici, am folosit Charsetclasa pentru a specifica codificarea caracterelor în fișier.

Metode de InputStreamReader

InputStreamReaderClasa oferă implementări pentru diferite metode prezintă în Readerclasă.

read () Metodă

  • read() - citește un singur personaj de la cititor
  • read(char() array) - citește caracterele din cititor și stochează în matricea specificată
  • read(char() array, int start, int length) - citește numărul de caractere egal cu lungimea de la cititor și stochează în matricea specificată începând de la început

De exemplu, să presupunem că avem un fișier numit input.txt cu următorul conținut.

 This is a line of text inside the file. 

Să încercăm să citim acest fișier folosind 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(); ) ) ) 

Ieșire

 Date din flux: Aceasta este o linie de text din fișier. 

În exemplul de mai sus, am creat un cititor de flux de intrare folosind fluxul de intrare de fișiere. Cititorul fluxului de intrare este legat de fișierul input.txt .

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

Pentru a citi caractere din fișier, am folosit read()metoda.

Metoda getEncoding ()

getEncoding()Metoda poate fi utilizată pentru a obține tipul de codificare care este utilizat pentru a stoca date în fluxul de intrare. De exemplu,

 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(); ) ) ) 

Ieșire

 Codificarea caracterelor intrării1: Cp1252 Codificarea caracterelor intrării2: UTF8 

În exemplul de mai sus, am creat un cititor de flux de intrare numit input1 și input2.

  • input1 nu specifică codarea caracterelor. Prin urmare, getEncoding()metoda returnează numele canonic al codificării implicite a caracterelor.
  • input2 specifică codarea caracterelor, UTF8 . Prin urmare, getEncoding()metoda returnează codificarea caracterelor specificate.

Notă : Am folosit Charset.forName()metoda pentru a specifica tipul de codificare a caracterelor. Pentru a afla mai multe, vizitați Java Charset (documentație oficială Java).

close () Metoda

Pentru a închide cititorul fluxului de intrare, putem folosi close()metoda. Odată close()apelată metoda, nu putem folosi cititorul pentru a citi datele.

Alte metode de InputStreamReader

Metodă Descriere
ready() verifică dacă fluxul este gata de citire
mark() marcați poziția în flux până la care au fost citite datele
reset() returnează controlul la punctul din flux unde a fost setată marca

Pentru a afla mai multe, vizitați Java InputStreamReader (documentație oficială Java).

Articole interesante...