U ovom uputstvu uz primjere ćemo naučiti o Javi InputStreamReader i njegovim metodama.
InputStreamReader
Razred java.io
paket se može koristiti za pretvaranje podataka u bajtovima u podatke u znakove.
Proširuje apstraktnu klasu Reader
.
Predmet InputStreamReader
radi s drugim ulaznim tokovima. Poznat je i kao most između tokova bajtova i tokova znakova. To je zato što InputStreamReader
bajtovi čitanja iz ulaznog toka čitaju se kao znakovi.
Na primjer, neki su znakovi trebali 2 bajta za pohranu u spremište. Za čitanje takvih podataka možemo koristiti čitač ulaznog toka koji zajedno čita 2 bajta i pretvara u odgovarajući znak.
Stvorite InputStreamReader
Da bismo stvorili InputStreamReader
, prvo moramo uvesti java.io.InputStreamReader
paket. Jednom kada uvozimo paket, evo kako možemo stvoriti čitač ulaznog toka.
// Creates an InputStream FileInputStream file = new FileInputStream(String path); // Creates an InputStreamReader InputStreamReader input = new InputStreamReader(file);
U gornjem primjeru stvorili smo InputStreamReader
imenovani ulaz zajedno s FileInputStream
imenovanom datotekom.
Ovdje se podaci u datoteci pohranjuju pomoću nekog zadanog kodiranja znakova.
Međutim, u datoteci možemo odrediti i vrstu kodiranja znakova ( UTF8 ili UTF16 ).
// Creates an InputStreamReader specifying the character encoding InputStreamReader input = new InputStreamReader(file, Charset cs);
Ovdje smo Charset
klasu koristili za specificiranje kodiranja znakova u datoteci.
Metode InputStreamReader
InputStreamReader
Klasa pruža implementacije za različite metode prezentirati u Reader
razredu.
read () metoda
read()
- čita jedan lik iz čitačaread(char() array)
- čita znakove iz čitača i pohranjuje u navedeni nizread(char() array, int start, int length)
- čita s čitača broj znakova jednak duljini i pohranjuje u navedeni niz počevši od početka
Na primjer, pretpostavimo da imamo datoteku koja se zove input.txt sa sljedećim sadržajem.
This is a line of text inside the file.
Pokušajmo pročitati ovu datoteku pomoću 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(); ) ) )
Izlaz
Podaci u streamu: Ovo je redak teksta unutar datoteke.
U gornjem primjeru stvorili smo čitač ulaznog toka pomoću ulaznog toka datoteke. Čitač ulaznog toka povezan je s datotekom input.txt .
FileInputStream file = new FileInputStream("input.txt"); InputStreamReader input = new InputStreamReader(file);
Za čitanje znakova iz datoteke koristili smo read()
metodu.
getEncoding () metoda
getEncoding()
Metoda se može koristiti kako bi dobili tip kodiranja koji se koristi za spremanje podataka u ulaznoj struji. Na primjer,
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(); ) ) )
Izlaz
Kodiranje znakova ulaza1: Cp1252 Kodiranje znakova ulaza2: UTF8
U gornjem primjeru stvorili smo 2 čitača ulaznih tokova pod nazivom input1 i input2.
- input1 ne navodi kodiranje znakova. Stoga
getEncoding()
metoda vraća kanonsko ime zadanog kodiranja znakova. - input2 navodi kodiranje znakova, UTF8 . Stoga
getEncoding()
metoda vraća navedeno kodiranje znakova.
Napomena : Charset.forName()
Metodom smo odredili vrstu kodiranja znakova. Da biste saznali više, posjetite Java Charset (službena Java dokumentacija).
close () Metoda
Da bismo zatvorili čitač ulaznog toka, možemo koristiti close()
metodu. Jednom kada se close()
metoda pozove, ne možemo koristiti čitač za čitanje podataka.
Ostale metode InputStreamReader
Metoda | Opis |
---|---|
ready() | provjerava je li stream spreman za čitanje |
mark() | označite položaj u toku do kojeg su podaci pročitani |
reset() | vraća kontrolu na točku u toku gdje je postavljena oznaka |
Da biste saznali više, posjetite Java InputStreamReader (službena Java dokumentacija).