„Java InputStreamReader“ (su pavyzdžiais)

Šioje pamokoje pavyzdžių pagalba sužinosime apie „Java InputStreamReader“ ir jos metodus.

InputStreamReaderKlasės java.iopakuotėje gali būti naudojama konvertuoti duomenis baitais į duomenų simbolių.

Tai pratęsia abstrakčią klasę Reader.

InputStreamReaderKlasė dirba su kitais įvesties srautus. Jis taip pat žinomas kaip tiltas tarp baitų srautų ir simbolių srautų. Taip yra todėl, kad InputStreamReaderiš įvesties srauto skaitomi baitai kaip simboliai.

Pavyzdžiui, kai kuriems simboliams saugykloje reikėjo išsaugoti 2 baitus. Tokiems duomenims skaityti galime naudoti įvesties srauto skaitytuvą, kuris nuskaito 2 baitus kartu ir paverčia atitinkamu simboliu.

Sukurkite „InputStreamReader“

Norėdami sukurti InputStreamReader, pirmiausia turime importuoti java.io.InputStreamReaderpaketą. Kai importuosime paketą, galime sukurti įvesties srauto skaitytuvą.

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

Ankstesniame pavyzdyje mes sukūrėme InputStreamReaderpavadintą įvestį kartu su FileInputStreampavadintu failu.

Čia failo duomenys saugomi naudojant numatytąjį simbolių kodavimą.

Tačiau faile taip pat galime nurodyti simbolių kodavimo tipą ( UTF8 arba UTF16 ).

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

Čia mes naudojome Charsetklasę, norėdami nurodyti failo simbolių kodavimą.

„InputStreamReader“ metodai

InputStreamReaderKlasė suteikia realizacijos įvairių metodų pristatyti į Readerklasę.

skaityti () metodas

  • read() - skaito vieną skaitytojo personažą
  • read(char() array) - skaito simbolius iš skaitytuvo ir saugo nurodytame masyve
  • read(char() array, int start, int length) - skaito iš skaitytuvo simbolių skaičių, lygų ilgiui, ir saugo nurodytame masyve nuo pat pradžių

Pvz., Tarkime, kad turime failą pavadinimu input.txt su tokiu turiniu.

 This is a line of text inside the file. 

Pabandykime perskaityti šį failą naudodami 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(); ) ) ) 

Rezultatas

 Duomenys sraute: tai yra teksto eilutė failo viduje. 

Ankstesniame pavyzdyje mes sukūrėme įvesties srauto skaitytuvą naudodami failo įvesties srautą. Įvesties srauto skaitytuvas susietas su failu input.txt .

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

Norėdami perskaityti simbolius iš failo, mes naudojome read()metodą.

getEncoding () metodas

getEncoding()Metodas gali būti naudojamas norint gauti tipo kodavimo, kad yra naudojamas duomenims saugoti į įvesties sraute. Pavyzdžiui,

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

Rezultatas

 „Input1“ simbolių kodavimas: Cp1252 „input2“ simbolių kodavimas: UTF8 

Ankstesniame pavyzdyje mes sukūrėme 2 įvesties srauto skaitytuvus, pavadintus input1 ir input2.

  • input1 nenurodo simbolių kodavimo. Taigi getEncoding()metodas grąžina numatytojo simbolių kodavimo kanoninį pavadinimą.
  • input2 nurodo simbolių kodavimą UTF8 . Taigi getEncoding()metodas grąžina nurodytą simbolių kodavimą.

Pastaba : mes naudojome Charset.forName()metodą, norėdami nurodyti simbolių kodavimo tipą. Norėdami sužinoti daugiau, apsilankykite „Java Charset“ (oficiali „Java“ dokumentacija).

uždaryti () metodas

Norėdami uždaryti įvesties srauto skaitytuvą, galime naudoti close()metodą. Iškvietus close()metodą, negalime naudoti skaitytuvo duomenims nuskaityti.

Kiti „InputStreamReader“ metodai

Metodas apibūdinimas
ready() patikrina, ar srautas paruoštas skaityti
mark() pažymėkite srauto vietą, iki kurios duomenys buvo perskaityti
reset() grąžina valdiklį į tašką sraute, kuriame buvo nustatytas ženklas

Norėdami sužinoti daugiau, apsilankykite „Java InputStreamReader“ (oficiali „Java“ dokumentacija).

Įdomios straipsniai...