Selles õpetuses õpime näidete abil Java InputStreamReaderit ja selle meetodeid.
InputStreamReader
Klassi java.io
pakett saab kasutada teisendada andmeid baitides arvesse andmete tähemärki.
See laiendab abstraktset klassi Reader
.
InputStreamReader
Klassi 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 InputStreamReader
peame java.io.InputStreamReader
esmalt 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 InputStreamReader
nimega sisendi koos FileInputStream
nimetatud 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 Charset
klassi abil määranud failis märgikodeeringu.
InputStreamReaderi meetodid
InputStreamReader
Tasemega näeb implementation erinevaid meetodeid sisalduse funktsioon Reader
tasemega.
loe () meetod
read()
- loeb lugejast välja ühe tegelaseread(char() array)
- loeb tähemärke lugejast ja salvestab määratud massiiviread(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).