Java InputStreamReader (s příklady)

V tomto tutoriálu se pomocí příkladů dozvíme o prostředí Java InputStreamReader a jeho metodách.

InputStreamReaderTřída java.iobalíček lze použít k převedení dat v bytech na data ve znacích.

Rozšiřuje abstraktní třídu Reader.

InputStreamReaderTřída spolupracuje s dalšími vstupními proudy. Je také známý jako most mezi bajtovými a znakovými toky. Důvodem je, že InputStreamReaderčte bajty ze vstupního proudu jako znaky.

Například některé znaky vyžadovaly uložení 2 bajtů do úložiště. Ke čtení těchto dat můžeme použít čtečku vstupního proudu, která čte 2 bajty dohromady a převádí je na odpovídající znak.

Vytvořte InputStreamReader

Abychom mohli vytvořit InputStreamReader, musíme java.io.InputStreamReadernejprve importovat balíček. Jakmile naimportujeme balíček, můžeme vytvořit čtečku vstupního proudu.

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

Ve výše uvedeném příkladu jsme vytvořili InputStreamReaderpojmenovaný vstup spolu s FileInputStreampojmenovaným souborem.

Zde se data v souboru ukládají pomocí nějakého výchozího kódování znaků.

Můžeme však také určit typ kódování znaků ( UTF8 nebo UTF16 ) v souboru.

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

Zde jsme použili Charsettřídu k určení kódování znaků v souboru.

Metody InputStreamReader

InputStreamReaderTřída poskytuje implementace pro různé metody prezentovat ve Readertřídě.

metoda read ()

  • read() - načte jeden znak z čtečky
  • read(char() array) - načte znaky ze čtečky a uloží je do zadaného pole
  • read(char() array, int start, int length) - načte počet znaků rovných délce ze čtečky a uloží do zadaného pole od začátku

Předpokládejme například, že máme soubor s názvem input.txt s následujícím obsahem.

 This is a line of text inside the file. 

Zkusme tento soubor přečíst pomocí 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ýstup

 Data ve streamu: Toto je řádek textu uvnitř souboru. 

Ve výše uvedeném příkladu jsme vytvořili čtečku vstupního proudu pomocí vstupního proudu souboru. Čtečka vstupního proudu je propojena se souborem input.txt .

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

Ke čtení znaků ze souboru jsme použili read()metodu.

Metoda getEncoding ()

getEncoding()Způsob může být použit k získání typ kódování, který se používá k ukládání dat ve vstupním proudu. Napří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ýstup

 Kódování znaků vstupu1: Cp1252 Kódování znaků vstupu2: UTF8 

Ve výše uvedeném příkladu jsme vytvořili 2 čtečku vstupních proudů s názvem input1 a input2.

  • input1 neurčuje kódování znaků. Proto getEncoding()metoda vrací kanonický název výchozího kódování znaků.
  • input2 určuje kódování znaků, UTF8 . Proto getEncoding()metoda vrací zadané kódování znaků.

Poznámka : Charset.forName()Metodu jsme použili k určení typu kódování znaků. Chcete-li se dozvědět více, navštivte Java Charset (oficiální dokumentace Java).

metoda close ()

K uzavření čtečky vstupního proudu můžeme použít close()metodu. Jakmile je close()metoda volána, nemůžeme použít čtečku ke čtení dat.

Další metody InputStreamReader

Metoda Popis
ready() zkontroluje, zda je stream připraven ke čtení
mark() označte pozici v proudu, do které byla načtena data
reset() vrátí ovládací prvek do bodu v proudu, kde byla nastavena značka

Další informace najdete v Java InputStreamReader (oficiální dokumentace Java).

Zajímavé články...