Šioje pamokoje pavyzdžių pagalba sužinosime apie „Java InputStreamReader“ ir jos metodus.
InputStreamReader
Klasės java.io
pakuotėje gali būti naudojama konvertuoti duomenis baitais į duomenų simbolių.
Tai pratęsia abstrakčią klasę Reader
.
InputStreamReader
Klasė dirba su kitais įvesties srautus. Jis taip pat žinomas kaip tiltas tarp baitų srautų ir simbolių srautų. Taip yra todėl, kad InputStreamReader
iš į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.InputStreamReader
paketą. 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 InputStreamReader
pavadintą įvestį kartu su FileInputStream
pavadintu 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 Charset
klasę, norėdami nurodyti failo simbolių kodavimą.
„InputStreamReader“ metodai
InputStreamReader
Klasė suteikia realizacijos įvairių metodų pristatyti į Reader
klasę.
skaityti () metodas
read()
- skaito vieną skaitytojo personažąread(char() array)
- skaito simbolius iš skaitytuvo ir saugo nurodytame masyveread(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).