Clase InputStream de Java: Métodos Principales y Ejemplo Práctico
Clase InputStream de Java
Este tutorial desmitifica la clase InputStream de Java, detallando sus métodos principales, subclases clave y un ejemplo práctico usando FileInputStream.
En el paquete java.io, InputStream es una superclase abstracta que representa un flujo de entrada orientado a bytes. Aunque no puedes instanciarla directamente, sus subclases concretas proporcionan mecanismos potentes para leer datos de archivos, arrays de bytes y otras fuentes.
Subclases Clave de InputStream
El uso práctico de InputStream depende de sus subclases. Las más comunes incluyen:
FileInputStream– lee bytes de un archivo en discoByteArrayInputStream– lee bytes de un array de bytes en memoriaObjectInputStream– deserializa objetos desde un flujo de entrada
Exploraremos cada subclase en tutoriales dedicados, pero por ahora centrémonos en FileInputStream.
Crear un InputStream
Para crear un InputStream, primero importa la clase:
import java.io.InputStream;
Como InputStream es abstracta, instancias una de sus subclases, por ejemplo:
InputStream flujo = new FileInputStream("ejemplo.txt");
Ten en cuenta que puedes sustituir FileInputStream por cualquier otra subclase concreta.
Métodos Principales de InputStream
Los siguientes métodos son comunes en todas las implementaciones de InputStream:
int read()– lee un solo byte, retornándolo comointo-1si se alcanza el final del flujo.int read(byte[] b)– llena el array de bytes proporcionado con datos y retorna el número de bytes leídos.int available()– informa el número de bytes que se pueden leer sin bloqueo.void mark(int readlimit)– marca la posición actual en el flujo para restablecerla después.void reset()– retorna el flujo a la marca más reciente.boolean markSupported()– indica simarkyresetson soportados.long skip(long n)– salta y descartanbytes de entrada.void close()– cierra el flujo y libera recursos del sistema.
Ejemplo Práctico: Leyendo un Archivo con FileInputStream
Supongamos que tenemos un archivo de texto llamado input.txt que contiene:
Esta es una línea de texto dentro del archivo.
A continuación se muestra un programa Java completo que abre el archivo, informa el número de bytes disponibles, lee el contenido en un array de bytes e imprime el resultado.
import java.io.FileInputStream;
import java.io.InputStream;
public class Main {
public static void main(String[] args) {
byte[] buffer = new byte[100];
try (InputStream input = new FileInputStream("input.txt")) {
System.out.println("Bytes disponibles: " + input.available());
int bytesLeidos = input.read(buffer);
System.out.println("Bytes leídos: " + bytesLeidos);
String datos = new String(buffer, 0, bytesLeidos);
System.out.println("Datos leídos del archivo:");
System.out.println(datos);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Salida
Bytes disponibles: 39
Bytes leídos: 39
Datos leídos del archivo:
Esta es una línea de texto dentro del archivo.
Este ejemplo demuestra cómo trabajar con FileInputStream en un bloque try-with-resources, asegurando que el flujo se cierre automáticamente incluso si ocurre una excepción.
Para una inmersión más profunda en la API, consulta la documentación oficial de Java: Javadoc de InputStream.
Java
- Palabra clave final en Java: Variables, métodos y clases
- Operador instanceof en Java: Guía completa
- Dominando la herencia en Java: Conceptos, tipos y ejemplos prácticos
- Entendiendo las clases anidadas estáticas en Java: Uso, diferencias y ejemplos
- Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
- Patrón Singleton en Java explicado: Cómo implementarlo y usarlo de forma segura
- Dominando la Reflexión en Java: Inspeccionando clases, métodos y campos en tiempo de ejecución
- Dominando ObjectOutputStream de Java: Serialización, Métodos y Ejemplos Prácticos
- Dominando Java Scanner: Guía Completa con Ejemplos Prácticos
- Dominando Java Generics: Construyendo Código Reutilizable y Type-Safe
- Dominando las operaciones de archivos en Java con java.io: creación, lectura, escritura y eliminación