I denne opplæringen vil vi lære om Java InputStreamReader og dens metoder ved hjelp av eksempler.
Den InputStreamReader
klassen av java.io
pakken kan brukes til å konvertere data i byte inn data i tegn.
Det utvider den abstrakte klassen Reader
.
Den InputStreamReader
klasse fungerer med andre inngangsstrømmer. Det er også kjent som en bro mellom byte-strømmer og karakterstrømmer. Dette er fordi InputStreamReader
lesebytes fra inngangsstrømmen som tegn.
For eksempel krevde noen tegn 2 byte å være lagret i lagringen. For å lese slike data kan vi bruke inngangsstrømleseren som leser de to bytene sammen og konverterer til det tilsvarende tegnet.
Opprett en InputStreamReader
For å opprette en InputStreamReader
, må vi importere java.io.InputStreamReader
pakken først. Når vi først har importert pakken, kan vi lage inngangsstrømleseren.
// Creates an InputStream FileInputStream file = new FileInputStream(String path); // Creates an InputStreamReader InputStreamReader input = new InputStreamReader(file);
I eksemplet ovenfor har vi opprettet en InputStreamReader
navngitt inngang sammen med den FileInputStream
navngitte filen.
Her lagres dataene i filen ved hjelp av en standard tegnkoding.
Vi kan imidlertid også spesifisere typen tegnkoding ( UTF8 eller UTF16 ) i filen.
// Creates an InputStreamReader specifying the character encoding InputStreamReader input = new InputStreamReader(file, Charset cs);
Her har vi brukt Charset
klassen til å spesifisere tegnkodingen i filen.
Metoder for InputStreamReader
Den InputStreamReader
klasse gir implementeringer for forskjellige metoder for å medføre i Reader
klassen.
les () Metode
read()
- leser et enkelt tegn fra leserenread(char() array)
- leser tegnene fra leseren og lagrer i den angitte matrisenread(char() array, int start, int length)
- leser antall tegn som er like lange fra leseren og lagrer i den angitte matrisen fra starten
Anta for eksempel at vi har en fil som heter input.txt med følgende innhold.
This is a line of text inside the file.
La oss prøve å lese denne filen ved hjelp av 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(); ) ) )
Produksjon
Data i strømmen: Dette er en tekstlinje i filen.
I eksemplet ovenfor har vi laget en inngangsstrømleser ved hjelp av filinngangsstrømmen. Inngangsstrømleseren er koblet til filen input.txt .
FileInputStream file = new FileInputStream("input.txt"); InputStreamReader input = new InputStreamReader(file);
For å lese tegn fra filen har vi brukt read()
metoden.
getEncoding () Metode
Den getEncoding()
metode kan brukes for å få den type koding som brukes til å lagre data i inngangsstrømmen. For eksempel,
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(); ) ) )
Produksjon
Tegnkodingen av input1: Cp1252 Tegnkodingen av input2: UTF8
I eksemplet ovenfor har vi opprettet 2 inngangsstrømlesere kalt input1 og input2.
- input1 spesifiserer ikke tegnkodingen. Derfor
getEncoding()
returnerer metoden det kanoniske navnet på standardtegnkodingen. - input2 spesifiserer tegnkodingen, UTF8 . Derfor
getEncoding()
returnerer metoden den spesifiserte tegnkodingen.
Merk : Vi har brukt Charset.forName()
metoden til å spesifisere typen tegnkoding. For å lære mer, besøk Java Charset (offisiell Java-dokumentasjon).
lukk () Metode
For å lukke inngangsstrømleseren kan vi bruke close()
metoden. Når close()
metoden er kalt, kan vi ikke bruke leseren til å lese dataene.
Andre metoder for InputStreamReader
Metode | Beskrivelse |
---|---|
ready() | sjekker om strømmen er klar til å bli lest |
mark() | merk posisjonen i strøm opp til hvilken data har blitt lest |
reset() | returnerer kontrollen til punktet i strømmen der merket ble satt |
For å lære mer, besøk Java InputStreamReader (offisiell Java-dokumentasjon).