I denne opplæringen vil vi lære om Java InputStreamReader og dens metoder ved hjelp av eksempler.
Den InputStreamReaderklassen av java.iopakken kan brukes til å konvertere data i byte inn data i tegn.
Det utvider den abstrakte klassen Reader.

Den InputStreamReaderklasse fungerer med andre inngangsstrømmer. Det er også kjent som en bro mellom byte-strømmer og karakterstrømmer. Dette er fordi InputStreamReaderlesebytes 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.InputStreamReaderpakken 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 InputStreamReadernavngitt inngang sammen med den FileInputStreamnavngitte 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 Charsetklassen til å spesifisere tegnkodingen i filen.
Metoder for InputStreamReader
Den InputStreamReaderklasse gir implementeringer for forskjellige metoder for å medføre i Readerklassen.
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).








