Java InputStreamReader-klasse
Java InputStreamReader-klasse
In deze zelfstudie leren we over Java InputStreamReader en zijn methoden met behulp van voorbeelden.
De InputStreamReader
klasse van de java.io
pakket kan worden gebruikt om gegevens in bytes om te zetten in gegevens in tekens.
Het breidt de abstracte klasse Reader
uit .
De InputStreamReader
class werkt met andere invoerstromen. Het is ook bekend als een brug tussen bytestreams en karakterstreams. Dit komt omdat de InputStreamReader
leest bytes uit de invoerstroom als tekens.
Voor sommige tekens was 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 bijbehorende teken.
Maak een InputStreamReader
Om een InputStreamReader
. aan te maken , moeten we de java.io.InputStreamReader
. importeren pakket eerst. Zodra we het pakket hebben geïmporteerd, kunnen we hier de invoerstroomlezer 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 InputStreamReader
. gemaakt genaamd invoer samen met de FileInputStream
genaamd bestand .
Hier worden de gegevens in het bestand opgeslagen met behulp van een standaard tekencodering.
We kunnen echter het type tekencodering specificeren (UTF8 of UTF16 ) ook in het bestand.
// Creates an InputStreamReader specifying the character encoding
InputStreamReader input = new InputStreamReader(file, Charset cs);
Hier hebben we de Charset
. gebruikt class om de tekencodering in het bestand op te geven.
Methoden van InputStreamReader
De InputStreamReader
class biedt implementaties voor verschillende methoden die aanwezig zijn in de Reader
klasse.
read()-methode
read()
- leest een enkel karakter van de lezerread(char[] array)
- leest de tekens uit de lezer en slaat ze op in de opgegeven arrayread(char[] array, int start, int length)
- leest het aantal tekens gelijk aan lengte van de lezer en slaat op in de opgegeven array vanaf de start
Stel dat we bijvoorbeeld 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
Data in the stream: This is a line of text inside the file.
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()
. gebruikt methode.
getEncoding()-methode
De getEncoding()
methode kan worden gebruikt om het type codering te krijgen 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
The character encoding of input1: Cp1252 The character encoding of input2: UTF8
In het bovenstaande voorbeeld hebben we 2 invoerstroomlezers gemaakt met de naam input1 en invoer2 .
- invoer1 specificeert niet de tekencodering. Vandaar de
getEncoding()
methode retourneert de canonieke naam van de standaard tekencodering. - invoer2 specificeert de tekencodering, UTF8 . Vandaar de
getEncoding()
methode retourneert de opgegeven tekencodering.
Opmerking :We hebben de Charset.forName()
. gebruikt methode om het type tekencodering op te geven. Ga voor meer informatie naar Java Charset (officiële Java-documentatie).
close()-methode
Om de invoerstroomlezer te sluiten, kunnen we de close()
. gebruiken methode. Zodra de close()
methode wordt aangeroepen, kunnen we de lezer niet gebruiken om de gegevens te lezen.
Andere methoden van InputStreamReader
Methode | Beschrijving |
---|---|
ready() | controleert of de stream klaar is om gelezen te worden |
mark() | markeer de positie in de stream tot waar gegevens zijn gelezen |
reset() | geeft de besturing terug naar het punt in de stream waar de markering was ingesteld |
Ga voor meer informatie naar Java InputStreamReader (officiële Java-documentatie).
Java