Java InputStreamReader (con esempi)

In questo tutorial, impareremo a conoscere Java InputStreamReader e i suoi metodi con l'aiuto di esempi.

La InputStreamReaderclasse del java.iopacchetto può essere utilizzata per convertire i dati in byte in dati in caratteri.

Estende la classe astratta Reader.

La InputStreamReaderclasse funziona con altri flussi di input. È anche noto come ponte tra flussi di byte e flussi di caratteri. Questo perché InputStreamReaderlegge i byte dal flusso di input come caratteri.

Ad esempio, alcuni caratteri richiedevano 2 byte per essere memorizzati nella memoria. Per leggere tali dati possiamo utilizzare il lettore del flusso di input che legge i 2 byte insieme e li converte nel carattere corrispondente.

Crea un InputStreamReader

Per creare un InputStreamReader, dobbiamo java.io.InputStreamReaderprima importare il pacchetto. Una volta importato il pacchetto, ecco come possiamo creare il lettore del flusso di input.

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

Nell'esempio precedente, abbiamo creato un InputStreamReaderinput denominato insieme al FileInputStreamfile denominato.

Qui, i dati nel file vengono memorizzati utilizzando una codifica dei caratteri predefinita.

Tuttavia, possiamo specificare anche il tipo di codifica dei caratteri ( UTF8 o UTF16 ) nel file.

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

Qui abbiamo usato la Charsetclasse per specificare la codifica dei caratteri nel file.

Metodi di InputStreamReader

La InputStreamReaderclasse fornisce implementazioni per diversi metodi presenti nella Readerclasse.

metodo read ()

  • read() - legge un singolo carattere dal lettore
  • read(char() array) - legge i caratteri dal lettore e li memorizza nell'array specificato
  • read(char() array, int start, int length) - legge il numero di caratteri uguale alla lunghezza dal lettore e memorizza nell'array specificato a partire dall'inizio

Ad esempio, supponiamo di avere un file denominato input.txt con il seguente contenuto.

 This is a line of text inside the file. 

Proviamo a leggere questo file usando 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(); ) ) ) 

Produzione

 Dati nel flusso: questa è una riga di testo all'interno del file. 

Nell'esempio precedente, abbiamo creato un lettore di flusso di input utilizzando il flusso di input di file. Il lettore del flusso di input è collegato al file input.txt .

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

Per leggere i caratteri dal file, abbiamo utilizzato il read()metodo.

metodo getEncoding ()

Il getEncoding()metodo può essere utilizzato per ottenere il tipo di codifica utilizzato per archiviare i dati nel flusso di input. Per esempio,

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

Produzione

 La codifica dei caratteri di input1: Cp1252 La codifica dei caratteri di input2: UTF8 

Nell'esempio precedente, abbiamo creato 2 lettori di flussi di input denominati input1 e input2.

  • input1 non specifica la codifica dei caratteri. Quindi il getEncoding()metodo restituisce il nome canonico della codifica dei caratteri predefinita.
  • input2 specifica la codifica dei caratteri, UTF8 . Quindi il getEncoding()metodo restituisce la codifica dei caratteri specificata.

Nota : abbiamo utilizzato il Charset.forName()metodo per specificare il tipo di codifica dei caratteri. Per saperne di più, visita Java Charset (documentazione Java ufficiale).

metodo close ()

Per chiudere il lettore del flusso di input, possiamo usare il close()metodo. Una volta close()chiamato il metodo, non possiamo usare il lettore per leggere i dati.

Altri metodi di InputStreamReader

Metodo Descrizione
ready() controlla se il flusso è pronto per essere letto
mark() segnare la posizione nel flusso fino alla quale i dati sono stati letti
reset() restituisce il controllo al punto del flusso in cui è stato impostato il segno

Per saperne di più, visita Java InputStreamReader (documentazione Java ufficiale).

Articoli interessanti...