Java InputStreamReader (s primeri)

V tej vadnici bomo s pomočjo primerov spoznali Java InputStreamReader in njegove metode.

InputStreamReaderRazred java.iopaketa se lahko uporabijo za pretvorbo podatkov v bajti v podatke v znakov.

Razširja abstraktni razred Reader.

InputStreamReaderRazred sodeluje z drugimi vhodnih tokov. Znan je tudi kot most med bajt tokovi in ​​tokovi znakov. To je zato, ker InputStreamReaderbere bajte iz vhodnega toka kot znake.

Na primer, nekateri znaki so zahtevali, da se v bazo shranijo 2 bajta. Za branje takšnih podatkov lahko uporabimo bralnik vhodnega toka, ki skupaj prebere 2 bajta in pretvori v ustrezen znak.

Ustvarite InputStreamReader

Če želite ustvariti InputStreamReader, moramo najprej uvoziti java.io.InputStreamReaderpaket. Ko uvozimo paket, je tukaj, kako lahko ustvarimo bralnik vhodnega toka.

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

V zgornjem primeru smo InputStreamReaderskupaj z FileInputStreamimenovano datoteko ustvarili imenovani vhod .

Tu se podatki v datoteki shranijo s privzetim kodiranjem znakov.

V datoteki pa lahko določimo tudi vrsto kodiranja znakov ( UTF8 ali UTF16 ).

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

Tu smo uporabili Charsetrazred za določanje kodiranja znakov v datoteki.

Metode InputStreamReader

InputStreamReaderRazred določa izvedb za različne načine predstaviti v Readerrazredu.

metoda read ()

  • read() - od bralca prebere en sam znak
  • read(char() array) - prebere znake iz bralnika in jih shrani v določeno polje
  • read(char() array, int start, int length) - iz bralnika prebere število znakov, enako dolžini, in shrani v določeno polje od začetka

Denimo, da imamo datoteko z imenom input.txt z naslednjo vsebino.

 This is a line of text inside the file. 

Poskusimo prebrati to datoteko z uporabo 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(); ) ) ) 

Izhod

 Podatki v toku: To je vrstica besedila znotraj datoteke. 

V zgornjem primeru smo z uporabo vhodnega toka datoteke ustvarili bralnik vhodnega toka. Čitalnik vhodnega toka je povezan z datoteko input.txt .

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

Za branje znakov iz datoteke smo uporabili read()metodo.

metoda getEncoding ()

Z getEncoding()metodo lahko dobimo vrsto kodiranja, ki se uporablja za shranjevanje podatkov v vhodnem toku. Na primer

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

Izhod

 Kodiranje znakov vhoda1: Cp1252 Kodiranje znakov vnosa2: UTF8 

V zgornjem primeru smo ustvarili 2 bralnika vhodnega toka z imenom input1 in input2.

  • input1 ne določa kodiranja znakov. Zato getEncoding()metoda vrne kanonično ime privzetega kodiranja znakov.
  • input2 določa kodiranje znakov, UTF8 . Zato getEncoding()metoda vrne določeno kodiranje znakov.

Opomba : Z Charset.forName()metodo smo določili vrsto kodiranja znakov. Če želite izvedeti več, obiščite Java Charset (uradna dokumentacija Java).

metoda close ()

Za zapiranje bralnika vhodnega toka lahko uporabimo close()metodo. Ko je close()metoda enkrat poklicana, ne moremo uporabljati bralnika za branje podatkov.

Druge metode InputStreamReader

Metoda Opis
ready() preveri, ali je tok pripravljen za branje
mark() označite položaj v toku, do katerega so bili prebrani podatki
reset() vrne kontrolnik na točko v toku, kjer je bila nastavljena oznaka

Če želite izvedeti več, obiščite Java InputStreamReader (uradna dokumentacija Java).

Zanimive Članki...