English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo tutorial, impareremo a utilizzare InputStreamReader e i suoi metodi in Java attraverso esempi.
La classe InputStreamReader del pacchetto java.io può essere utilizzata per convertire i dati in byte in dati in caratteri.
It inherits the abstract class Reader.
The InputStreamReader class works with other input streams. It is also known as a bridge between byte streams and character streams because the InputStreamReader reads bytes as characters from the input stream.
For example, some characters need 2 bytes to be stored in memory. To read such data, we can use an input stream reader that reads 2 bytes together and converts it to the corresponding character.
To create an InputStreamReader, we must first import the java.io.InputStreamReader package. After importing the package, we can create the input stream reader.
//Create an InputStream FileInputStream file = new FileInputStream(String path); //Create an InputStreamReader InputStreamReader input = new InputStreamReader(file);
In the above example, we created an InputStreamReader named input and a FileInputStream named file.
Here, the data in the file is stored using some default character encoding.
However, we can also specify the type of character encoding in the file (UTF8orUTF16)
//Create an InputStreamReader, specifying the character encoding InputStreamReader input = new InputStreamReader(file, Charset cs);
Here, we used the Charset class to specify the character encoding of the file.
The InputStreamReader class provides different implementations of the methods existing in the Reader class.
read() - Reads a single character from the reader
read(char[] array) - Reads characters from the reader and stores them in the specified array
read(char[] array, int start, int length) - Reads characters equal to length from the reader and stores them in the specified array starting at index start
For example, suppose we have a file namedinput.txtThe file contains the following content.
This is a line of text inside the file.
Let's try to use the InputStreamReader to read this file.
import java.io.InputStreamReader; import java.io.FileInputStream; class Main { public static void main(String[] args) { //Create a character array char[] array = new char[100]; try { //Create a FileInputStream FileInputStream file = new FileInputStream("input.txt"); //Create an InputStreamReader InputStreamReader input = new InputStreamReader(file); //leggi i caratteri dal file input.read(array); System.out.println("i dati dello stream:"); System.out.println(array); //chiudi reader input.close(); } catch(Exception e) { e.getStackTrace(); } } }
Risultato di output
i dati dello stream: This is a line of text inside the file.
Nel seguente esempio, abbiamo creato un lettore di stream di input utilizzando uno stream di input di file. Il lettore di stream di input è collegato al fileinput.txtcollegamento.
FileInputStream file = new FileInputStream("input.txt"); InputStreamReader input = new InputStreamReader(file);
Per leggere i caratteri da un file, abbiamo utilizzato il metodo read().
Il metodo getEncoding() può essere utilizzato per ottenere il tipo di codifica utilizzato per memorizzare i dati nello stream di input. Ad esempio,
import java.io.InputStreamReader; import java.nio.charset.Charset; import java.io.FileInputStream; class Main { public static void main(String[] args) { try { //crea un FileInputStream FileInputStream file = new FileInputStream("input.txt"); //crea un InputStreamReader con codifica predefinita InputStreamReader input1 = new InputStreamReader(file); //crea un InputStreamReader con codifica specificata InputStreamReader input2 = new InputStreamReader(file, Charset.forName("UTF8")); //ritorna la codifica dei caratteri dello stream di input System.out.println("codifica dei caratteri di input1: " + input1.getEncoding()); System.out.println("codifica dei caratteri di input2: " + input2.getEncoding()); //chiudi reader input1.close(); input2.close(); } catch(Exception e) { e.getStackTrace(); } } }
Risultato di output
Codifica dei caratteri di input1: Cp1252 Codifica dei caratteri di input2: UTF8
Nell'esempio sopra, abbiamo creato due lettori di input stream, rispettivamente chiamati input1 e input2.
input1 non specifica la codifica dei caratteri. Pertanto, il metodo getEncoding() restituisce il nome standard della codifica dei caratteri predefinita.
input2 specifica la codifica dei caratteriUTF8. Pertanto, il metodo getEncoding() restituisce il nome standard della codifica dei caratteri specificata.
Attenzione: Abbiamo specificato il tipo di codifica dei caratteri utilizzando il metodo Charset.forName().
Per chiudere il lettore di input stream, possiamo utilizzare il metodo close(). Dopo aver chiamato questo metodo, non possiamo più utilizzare il lettore per leggere i dati.
Metodo | Descrizione |
---|---|
ready() | Controlla se lo stream è pronto per essere letto |
mark() | Marca la posizione dei dati letti nel flusso |
reset() | Ripristina il punto di marca |