Java InputStreamReader (s primjerima)

U ovom uputstvu uz primjere ćemo naučiti o Javi InputStreamReader i njegovim metodama.

InputStreamReaderRazred java.iopaket se može koristiti za pretvaranje podataka u bajtovima u podatke u znakove.

Proširuje apstraktnu klasu Reader.

Predmet InputStreamReaderradi s drugim ulaznim tokovima. Poznat je i kao most između tokova bajtova i tokova znakova. To je zato što InputStreamReaderbajtovi č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.InputStreamReaderpaket. 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 InputStreamReaderimenovani ulaz zajedno s FileInputStreamimenovanom 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 Charsetklasu koristili za specificiranje kodiranja znakova u datoteci.

Metode InputStreamReader

InputStreamReaderKlasa pruža implementacije za različite metode prezentirati u Readerrazredu.

read () metoda

  • read() - čita jedan lik iz čitača
  • read(char() array) - čita znakove iz čitača i pohranjuje u navedeni niz
  • read(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).

Zanimljivi članci...