Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Java InputStreamReader Explicado: Métodos, Codificación y Ejemplos Prácticos

Java InputStreamReader Explicado

Descubre cómo InputStreamReader de Java conecta flujos de bytes a flujos de caracteres, sus métodos principales y cómo manejar la codificación correctamente.

La clase InputStreamReader en java.io convierte bytes sin procesar en caracteres, haciéndola esencial para leer archivos de texto, flujos de red o cualquier fuente basada en bytes que represente caracteres.

Extiende la clase abstracta Reader y actúa como un puente entre flujos de bytes (ej., FileInputStream) y flujos de caracteres.

Cuando un carácter requiere múltiples bytes—como texto codificado en UTF-8 o UTF-16—InputStreamReader lee esos bytes juntos y produce el carácter correcto.

Crear un InputStreamReader

Comienza importando la clase necesaria:

import java.io.InputStreamReader;

La instanciación típica usa un FileInputStream como fuente de bytes subyacente:

FileInputStream archivo = new FileInputStream("ejemplo.txt");
InputStreamReader reader = new InputStreamReader(archivo);

Si conoces la codificación del archivo, especifícala para evitar malinterpretaciones:

InputStreamReader reader = new InputStreamReader(archivo, Charset.forName("UTF-8"));

Usar Charset garantiza que el reader interprete los bytes usando el conjunto de caracteres previsto.

Métodos Principales de InputStreamReader

read()

Ejemplo: Leyendo un archivo de texto en un array de caracteres.

import java.io.*;

class Main {
    public static void main(String[] args) {
        char[] buffer = new char[100];
        try (FileInputStream archivo = new FileInputStream("input.txt");
             InputStreamReader reader = new InputStreamReader(archivo)) {
            reader.read(buffer);
            System.out.println("Datos en el flujo:\n" + new String(buffer));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Salida

Datos en el flujo:
Esta es una línea de texto dentro del archivo.

getEncoding()

Recupera la codificación usada por el reader:

InputStreamReader readerPorDefecto = new InputStreamReader(archivo);
InputStreamReader readerUtf8 = new InputStreamReader(archivo, Charset.forName("UTF-8"));
System.out.println("Codificación por defecto: " + readerPorDefecto.getEncoding());
System.out.println("Codificación UTF-8: " + readerUtf8.getEncoding());

Salida

Codificación por defecto: Cp1252
Codificación UTF-8: UTF-8

Cuando no se especifica codificación, getEncoding() retorna el charset por defecto de la plataforma.

Nota: Usa Charset.forName() para codificaciones explícitas. Para más detalles, consulta la documentación de Java Charset.

close()

Siempre cierra el reader después de usarlo. La construcción try-with-resources de arriba lo maneja automáticamente, pero también puedes llamar a reader.close() explícitamente.

Otros Métodos Útiles

MétodoDescripción
ready()Verifica si el flujo está listo para lectura.
mark(int readAheadLimit)Marca la posición actual para restablecerla después.
reset()Retorna a la última posición marcada.

Para una referencia completa, visita la página oficial de InputStreamReader.

Java

  1. Palabra clave final en Java: Variables, métodos y clases
  2. Operador instanceof en Java: Guía completa
  3. Dominando la herencia en Java: Conceptos, tipos y ejemplos prácticos
  4. Entendiendo las clases anidadas estáticas en Java: Uso, diferencias y ejemplos
  5. Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
  6. Patrón Singleton en Java explicado: Cómo implementarlo y usarlo de forma segura
  7. Dominando la Reflexión en Java: Inspeccionando clases, métodos y campos en tiempo de ejecución
  8. Dominando ObjectOutputStream de Java: Serialización, Métodos y Ejemplos Prácticos
  9. Dominando Java Scanner: Guía Completa con Ejemplos Prácticos
  10. Dominando Java Generics: Construyendo Código Reutilizable y Type-Safe
  11. Dominando las operaciones de archivos en Java con java.io: creación, lectura, escritura y eliminación