Java InputStreamReader (koos näidetega)

Selles õpetuses õpime näidete abil Java InputStreamReaderit ja selle meetodeid.

InputStreamReaderKlassi java.iopakett saab kasutada teisendada andmeid baitides arvesse andmete tähemärki.

See laiendab abstraktset klassi Reader.

InputStreamReaderKlassi töötab koos teiste sisendid. Seda tuntakse ka sillana baitivoogude ja märgivoogude vahel. Selle põhjuseks on asjaolu InputStreamReader, et sisendvoost loetakse baiti tähemärkidena.

Näiteks vajati mõnede tähemärkide salvestamiseks 2 baiti. Selliste andmete lugemiseks võime kasutada sisendvoo lugejat, mis loeb 2 baiti kokku ja teisendab vastavaks tähemärgiks.

Looge InputStreamReader

Selle loomiseks InputStreamReaderpeame java.io.InputStreamReaderesmalt pakendi importima . Kui pakett on siia imporditud, saame sisendvoo lugeja luua.

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

Ülaltoodud näites oleme loonud InputStreamReadernimega sisendi koos FileInputStreamnimetatud failiga.

Siin salvestatakse failis olevad andmed mõne vaikimisi märgikodeeringu abil.

Siiski saame failis määrata ka märkide kodeerimise tüübi ( UTF8 või UTF16 ).

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

Siin oleme Charsetklassi abil määranud failis märgikodeeringu.

InputStreamReaderi meetodid

InputStreamReaderTasemega näeb implementation erinevaid meetodeid sisalduse funktsioon Readertasemega.

loe () meetod

  • read() - loeb lugejast välja ühe tegelase
  • read(char() array) - loeb tähemärke lugejast ja salvestab määratud massiivi
  • read(char() array, int start, int length) - loeb lugerilt pikkusega võrdse arvu tähemärke ja salvestab algusest peale määratud massiivi

Oletame näiteks, et meil on järgmise sisuga fail nimega input.txt .

 This is a line of text inside the file. 

Proovime seda faili lugeda 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äljund

 Andmed voos: see on tekstirida faili sees. 

Ülaltoodud näites oleme loonud sisendi voo lugeja faili sisendvoo abil. Sisendvoo lugeja on lingitud failiga input.txt .

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

Failist märkide lugemiseks oleme kasutanud read()meetodit.

getEncoding () meetod

getEncoding()Meetodit saab kasutada, et saada kodeerimistüüp, mida kasutatakse andmete salvestamiseks sisendivoost. Näiteks,

 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äljund

 Sisendi1: Cp1252 märkide kodeering: sisendi2: UTF8 märkide kodeerimine 

Ülaltoodud näites oleme loonud 2 sisendvoo lugejat nimega input1 ja input2.

  • input1 ei määra märkide kodeerimist. Seega getEncoding()tagastab meetod vaikimisi märgikodeeringu kanoonilise nime.
  • input2 määrab tähemärgi kodeerimise UTF8 . Seega getEncoding()tagastab meetod määratud märgikodeeringu.

Märkus . Me kasutasime Charset.forName()meetodit märkide kodeerimise tüübi määramiseks. Lisateabe saamiseks külastage Java Charset (ametlik Java dokumentatsioon).

close () meetod

Sisendvoo lugeja sulgemiseks saame kasutada close()meetodit. Kui close()meetod on välja kutsutud, ei saa me andmete lugemiseks kasutada lugejat.

Muud InputStreamReaderi meetodid

Meetod Kirjeldus
ready() kontrollib, kas voog on lugemiseks valmis
mark() märkige voos asend, kuhu andmed on loetud
reset() tagastab juhtnupu voos punkti, kuhu märk oli seatud

Lisateabe saamiseks külastage Java InputStreamReader (ametlik Java dokumentatsioon).

Huvitavad Artiklid...