Dominando Java BufferedReader: Manejo Eficiente de Flujos de Caracteres
Clase BufferedReader de Java
Descubre cómo la clase BufferedReader mejora el rendimiento de I/O en Java con ejemplos prácticos y explicaciones detalladas de métodos.
La clase BufferedReader, parte del paquete java.io, envuelve otro Reader para proporcionar entrada de caracteres eficiente. Al leer bloques de datos en un búfer interno, minimiza las costosas operaciones de I/O de disco.
Cómo Funciona BufferedReader
Internamente, BufferedReader mantiene un búfer de 8,192 caracteres (tamaño por defecto). Durante una operación de lectura, un bloque de caracteres se obtiene del archivo fuente y se almacena en este búfer. Las lecturas subsiguientes extraen caracteres del búfer uno por uno, reduciendo drásticamente el número de accesos a disco y acelerando el I/O.
Crear un BufferedReader
Para usar BufferedReader, impórtalo desde java.io y envuelve cualquier implementación de Reader, como FileReader:
import java.io.FileReader;
import java.io.BufferedReader;
FileReader archivo = new FileReader("ejemplo.txt");
BufferedReader reader = new BufferedReader(archivo);
También puedes especificar un tamaño de búfer personalizado:
BufferedReader reader = new BufferedReader(archivo, 16384); // búfer de 16KB
Métodos Principales de BufferedReader
read()
int read()– lee un solo carácter del búfer.int read(char[] cbuf)– lee caracteres en el array suministrado.int read(char[] cbuf, int off, int len)– lee hasta len caracteres en el array comenzando en el offset off.
Ejemplo: leyendo todo el contenido de input.txt en un array de caracteres:
import java.io.FileReader;
import java.io.BufferedReader;
class Main {
public static void main(String[] args) {
char[] buffer = new char[100];
try (FileReader archivo = new FileInputStream("input.txt");
BufferedReader reader = new BufferedReader(archivo)) {
reader.read(buffer);
System.out.println("Datos en el archivo:\n" + new String(buffer));
} catch (Exception e) {
e.printStackTrace();
}
}
}
Salida
Datos en el archivo: Esta es una línea de texto dentro del archivo.
skip()
El método skip(long n) descarta los siguientes n caracteres del flujo:
reader.skip(5); // salta "Esta "
Después de saltar, leer el contenido restante produce:
Datos después de saltar 5 caracteres: es una línea de texto dentro del archivo.
close()
Siempre cierra el reader para liberar recursos del sistema:
reader.close();
Otros Métodos Útiles
| Método | Descripción |
|---|---|
ready() | Verifica si el flujo está listo para leerse sin bloqueo. |
mark(int readAheadLimit) | Marca la posición actual en el flujo. |
reset() | Restablece el flujo a la marca más reciente. |
Para una referencia completa, visita la documentación oficial de Java.
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 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
- Lectura de archivos en Java con BufferedReader – Guía práctica con ejemplos