V tej vadnici bomo s pomočjo primerov spoznali Java InputStreamReader in njegove metode.
InputStreamReader
Razred java.io
paketa se lahko uporabijo za pretvorbo podatkov v bajti v podatke v znakov.
Razširja abstraktni razred Reader
.
InputStreamReader
Razred sodeluje z drugimi vhodnih tokov. Znan je tudi kot most med bajt tokovi in tokovi znakov. To je zato, ker InputStreamReader
bere 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.InputStreamReader
paket. 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 InputStreamReader
skupaj z FileInputStream
imenovano 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 Charset
razred za določanje kodiranja znakov v datoteki.
Metode InputStreamReader
InputStreamReader
Razred določa izvedb za različne načine predstaviti v Reader
razredu.
metoda read ()
read()
- od bralca prebere en sam znakread(char() array)
- prebere znake iz bralnika in jih shrani v določeno poljeread(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).