Java InputStreamReader (met voorbeelden)

In deze tutorial leren we met behulp van voorbeelden over Java InputStreamReader en zijn methoden.

De InputStreamReaderklasse van het java.iopakket kan worden gebruikt om gegevens in bytes om te zetten in gegevens in tekens.

Het breidt de abstracte klasse uit Reader.

De InputStreamReaderklas werkt met andere invoerstromen. Het is ook bekend als een brug tussen bytestromen en karakterstromen. Dit komt doordat het InputStreamReaderbytes uit de invoerstroom leest als tekens.

Voor sommige tekens waren bijvoorbeeld 2 bytes nodig om in de opslag te worden opgeslagen. Om dergelijke gegevens te lezen, kunnen we de invoerstroomlezer gebruiken die de 2 bytes samen leest en omzet in het overeenkomstige teken.

Maak een InputStreamReader

Om een ​​te maken InputStreamReader, moeten we eerst het java.io.InputStreamReaderpakket importeren . Zodra we het pakket hebben geïmporteerd, is hier hoe we de invoerstroomlezer kunnen maken.

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

In het bovenstaande voorbeeld hebben we een InputStreamReaderbenoemde invoer gemaakt samen met het FileInputStreamgenoemde bestand.

Hier worden de gegevens in het bestand opgeslagen met behulp van een standaard tekencodering.

We kunnen echter ook het type tekencodering ( UTF8 of UTF16 ) in het bestand specificeren .

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

Hier hebben we de Charsetklasse gebruikt om de tekencodering in het bestand te specificeren.

Methoden van InputStreamReader

De InputStreamReaderklasse biedt implementaties voor verschillende methoden die in de Readerklasse aanwezig zijn.

read () Methode

  • read() - leest een enkel teken uit de lezer
  • read(char() array) - leest de karakters van de lezer en slaat op in de gespecificeerde array
  • read(char() array, int start, int length) - leest het aantal tekens dat gelijk is aan de lengte van de lezer en slaat het vanaf het begin op in de opgegeven array

Stel dat we een bestand hebben met de naam input.txt met de volgende inhoud.

 This is a line of text inside the file. 

Laten we proberen dit bestand te lezen met 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(); ) ) ) 

Uitvoer

 Gegevens in de stream: dit is een regel tekst in het bestand. 

In het bovenstaande voorbeeld hebben we een invoerstroomlezer gemaakt met behulp van de bestandsinvoerstroom. De invoerstroomlezer is gekoppeld aan het bestand input.txt .

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

Om tekens uit het bestand te lezen, hebben we de read()methode gebruikt.

getEncoding () - methode

De getEncoding()methode kan worden gebruikt om het type codering te verkrijgen dat wordt gebruikt om gegevens in de invoerstroom op te slaan. Bijvoorbeeld,

 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(); ) ) ) 

Uitvoer

 De tekencodering van input1: Cp1252 De tekencodering van input2: UTF8 

In het bovenstaande voorbeeld hebben we 2 invoerstroomlezers gemaakt met de naam input1 en input2.

  • input1 specificeert niet de tekencodering. Daarom getEncoding()retourneert de methode de canonieke naam van de standaard tekencodering.
  • input2 specificeert de tekencodering, UTF8 . Daarom getEncoding()retourneert de methode de opgegeven tekencodering.

Opmerking : we hebben de Charset.forName()methode gebruikt om het type tekencodering te specificeren. Voor meer informatie, bezoek Java Charset (officiële Java-documentatie).

close () Methode

Om de invoerstroomlezer te sluiten, kunnen we de close()methode gebruiken. Als de close()methode eenmaal is aangeroepen, kunnen we de lezer niet gebruiken om de gegevens te lezen.

Andere methoden van InputStreamReader

Methode Omschrijving
ready() controleert of de stream klaar is om gelezen te worden
mark() markeer de positie in de stream tot waar de gegevens zijn gelezen
reset() geeft het besturingselement terug naar het punt in de stream waar de markering was geplaatst

Ga voor meer informatie naar Java InputStreamReader (officiële Java-documentatie).

Interessante artikelen...