Java InputStreamReader (med eksempler)

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 leseren
  • read(char() array) - leser tegnene fra leseren og lagrer i den angitte matrisen
  • read(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).

Interessante artikler...