V tomto tutoriáli sa pomocou príkladov dozvieme o prostredí Java InputStreamReader a jeho metódach.
InputStreamReader
Trieda java.io
balíček možno použiť na prevedenie dát v bytoch na dáta v znakoch.
Rozširuje abstraktnú triedu Reader
.
InputStreamReader
Trieda 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 InputStreamReader
bajty čí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.InputStreamReader
balí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 InputStreamReader
pomenovaný vstup spolu s FileInputStream
pomenovaný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 Charset
triedy zadali kódovanie znakov v súbore.
Metódy InputStreamReader
InputStreamReader
Trieda poskytuje implementácie pre rôzne metódy prezentovať vo Reader
triede.
metóda read ()
read()
- načíta z čítačky jeden znakread(char() array)
- načíta znaky z čítačky a uloží ich do zadaného poľaread(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).