InputStreamReader de Java (con ejemplos)

En este tutorial, aprenderemos sobre Java InputStreamReader y sus métodos con la ayuda de ejemplos.

La InputStreamReaderclase del java.iopaquete se puede utilizar para convertir datos en bytes en datos en caracteres.

Extiende la clase abstracta Reader.

La InputStreamReaderclase trabaja con otros flujos de entrada. También se conoce como puente entre flujos de bytes y flujos de caracteres. Esto se debe a que InputStreamReaderlee bytes del flujo de entrada como caracteres.

Por ejemplo, algunos caracteres requieren 2 bytes para ser almacenados en el almacenamiento. Para leer dichos datos podemos usar el lector de flujo de entrada que lee los 2 bytes juntos y los convierte en el carácter correspondiente.

Crear un InputStreamReader

Para crear un InputStreamReader, java.io.InputStreamReaderprimero debemos importar el paquete. Una vez que importamos el paquete, aquí es cómo podemos crear el lector de flujo de entrada.

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

En el ejemplo anterior, hemos creado una InputStreamReaderentrada con FileInputStreamnombre junto con el archivo con nombre.

Aquí, los datos en el archivo se almacenan usando alguna codificación de caracteres predeterminada.

Sin embargo, también podemos especificar el tipo de codificación de caracteres ( UTF8 o UTF16 ) en el archivo.

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

Aquí, hemos utilizado la Charsetclase para especificar la codificación de caracteres en el archivo.

Métodos de InputStreamReader

La InputStreamReaderclase proporciona implementaciones para diferentes métodos presentes en la Readerclase.

Método read ()

  • read() - lee un solo carácter del lector
  • read(char() array) - lee los caracteres del lector y los almacena en la matriz especificada
  • read(char() array, int start, int length) - lee el número de caracteres igual a la longitud del lector y los almacena en la matriz especificada comenzando desde el principio

Por ejemplo, supongamos que tenemos un archivo llamado input.txt con el siguiente contenido.

 This is a line of text inside the file. 

Intentemos leer este archivo 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(); ) ) ) 

Salida

 Datos en la secuencia: esta es una línea de texto dentro del archivo. 

En el ejemplo anterior, hemos creado un lector de flujo de entrada utilizando el flujo de entrada de archivo. El lector de flujo de entrada está vinculado con el archivo input.txt .

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

Para leer caracteres del archivo, hemos utilizado el read()método.

Método getEncoding ()

El getEncoding()método se puede utilizar para obtener el tipo de codificación que se utiliza para almacenar datos en el flujo de entrada. Por ejemplo,

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

Salida

 La codificación de caracteres de input1: Cp1252 La codificación de caracteres de input2: UTF8 

En el ejemplo anterior, hemos creado 2 lectores de flujo de entrada llamados input1 y input2.

  • input1 no especifica la codificación de caracteres. Por lo tanto, el getEncoding()método devuelve el nombre canónico de la codificación de caracteres predeterminada.
  • input2 especifica la codificación de caracteres, UTF8 . Por lo tanto, el getEncoding()método devuelve la codificación de caracteres especificada.

Nota : hemos utilizado el Charset.forName()método para especificar el tipo de codificación de caracteres. Para obtener más información, visite Java Charset (documentación oficial de Java).

Método close ()

Para cerrar el lector de flujo de entrada, podemos usar el close()método. Una vez close()que se llama al método, no podemos usar el lector para leer los datos.

Otros métodos de InputStreamReader

Método Descripción
ready() comprueba si la transmisión está lista para ser leída
mark() marcar la posición en la secuencia hasta la que se han leído los datos
reset() devuelve el control al punto de la secuencia donde se estableció la marca

Para obtener más información, visite Java InputStreamReader (documentación oficial de Java).

Articulos interesantes...