Java InputStreamReader (s príkladmi)

V tomto tutoriáli sa pomocou príkladov dozvieme o prostredí Java InputStreamReader a jeho metódach.

InputStreamReaderTrieda java.iobalíček možno použiť na prevedenie dát v bytoch na dáta v znakoch.

Rozširuje abstraktnú triedu Reader.

InputStreamReaderTrieda spolupracuje s ďalšími vstupnými prúdmi. Je tiež známy ako most medzi prúdmi bajtov a prúdmi znakov. Je to tak preto, lebo InputStreamReaderbajty čítané zo vstupného toku sú ako znaky.

Napríklad niektoré znaky vyžadovali, aby boli v úložisku uložené 2 bajty. Na čítanie takýchto údajov môžeme použiť čítačku vstupného toku, ktorá číta 2 bajty dohromady a prevádza ich na zodpovedajúci znak.

Vytvorte InputStreamReader

Aby sme mohli vytvoriť InputStreamReader, musíme najskôr importovať java.io.InputStreamReaderbalík. Po importovaní balíka tu môžeme vytvoriť čítačku vstupného toku.

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

Vo vyššie uvedenom príklade sme vytvorili InputStreamReaderpomenovaný vstup spolu s FileInputStreampomenovaným súborom.

Tu sa údaje v súbore ukladajú pomocou nejakého predvoleného kódovania znakov.

Môžeme však určiť aj typ kódovania znakov ( UTF8 alebo UTF16 ) v súbore.

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

Tu sme pomocou Charsettriedy zadali kódovanie znakov v súbore.

Metódy InputStreamReader

InputStreamReaderTrieda poskytuje implementácie pre rôzne metódy prezentovať vo Readertriede.

metóda read ()

  • read() - načíta z čítačky jeden znak
  • read(char() array) - načíta znaky z čítačky a uloží ich do zadaného poľa
  • read(char() array, int start, int length) - načíta z čítačky počet znakov rovný dĺžke a uloží ju do určeného poľa počnúc od začiatku

Predpokladajme napríklad, že máme súbor s názvom input.txt s nasledujúcim obsahom.

 This is a line of text inside the file. 

Skúsme tento súbor prečítať pomocou 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(); ) ) ) 

Výkon

 Údaje v streame: Toto je riadok textu vo vnútri súboru. 

Vo vyššie uvedenom príklade sme vytvorili vstupný prúd čítačky pomocou vstupného toku súborov. Čítačka vstupného toku je prepojená so súborom input.txt .

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

Na načítanie znakov zo súboru sme použili read()metódu.

metóda getEncoding ()

Túto getEncoding()metódu je možné použiť na získanie typu kódovania, ktoré sa používa na ukladanie údajov do vstupného toku. Napríklad,

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

Výkon

 Kódovanie znakov vstupu1: Cp1252 Kódovanie znakov vstupu2: UTF8 

Vo vyššie uvedenom príklade sme vytvorili 2 čítačky vstupných prúdov s názvom input1 a input2.

  • input1 neurčuje kódovanie znakov. Preto getEncoding()metóda vracia kanonický názov predvoleného kódovania znakov.
  • input2 určuje kódovanie znakov, UTF8 . Preto getEncoding()metóda vracia zadané kódovanie znakov.

Poznámka : Túto Charset.forName()metódu sme použili na určenie typu kódovania znakov. Ak sa chcete dozvedieť viac, navštívte Java Charset (oficiálna dokumentácia Java).

metóda close ()

Na zatvorenie čítačky vstupného toku môžeme použiť túto close()metódu. Po close()zavolaní metódy nemôžeme na čítanie údajov použiť čítačku.

Ďalšie metódy InputStreamReader

Metóda Popis
ready() skontroluje, či je stream pripravený na čítanie
mark() označte pozíciu v streame, do ktorej boli načítané údaje
reset() vráti ovládací prvok do bodu v streame, kde bola nastavená značka

Ak sa chcete dozvedieť viac, navštívte Java InputStreamReader (oficiálna dokumentácia Java).

Zaujímavé články...