En este tema, aprenderemos sobre dos clases fundamentales en Java para la lectura y escritura de archivos: BufferedReader
y BufferedWriter
. Estas clases son parte del paquete java.io
y se utilizan para mejorar la eficiencia de las operaciones de entrada/salida (I/O) al proporcionar un buffer que reduce el número de accesos al disco.
Objetivos
- Comprender qué son
BufferedReader
yBufferedWriter
. - Aprender a utilizar
BufferedReader
para leer archivos. - Aprender a utilizar
BufferedWriter
para escribir archivos. - Realizar ejercicios prácticos para consolidar el conocimiento.
¿Qué es BufferedReader
?
BufferedReader
es una clase que se utiliza para leer texto de una secuencia de entrada de manera eficiente. Lee caracteres, matrices de caracteres y líneas. La eficiencia se logra mediante el uso de un buffer que almacena temporalmente los datos leídos.
Sintaxis Básica
Métodos Comunes
read()
: Lee un solo carácter.readLine()
: Lee una línea completa de texto.close()
: Cierra el flujo y libera los recursos asociados.
Ejemplo Práctico
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class BufferedReaderExample { public static void main(String[] args) { try (BufferedReader br = new BufferedReader(new FileReader("archivo.txt"))) { String linea; while ((linea = br.readLine()) != null) { System.out.println(linea); } } catch (IOException e) { e.printStackTrace(); } } }
Explicación:
- Se crea un
BufferedReader
que envuelve unFileReader
. - Se lee cada línea del archivo usando
readLine()
hasta que no haya más líneas (null
). - Se imprime cada línea en la consola.
- El bloque
try-with-resources
asegura que elBufferedReader
se cierre automáticamente.
¿Qué es BufferedWriter
?
BufferedWriter
es una clase que se utiliza para escribir texto en una secuencia de salida de manera eficiente. Al igual que BufferedReader
, utiliza un buffer para reducir el número de accesos al disco.
Sintaxis Básica
Métodos Comunes
write(String s)
: Escribe una cadena de texto.newLine()
: Escribe un separador de línea.flush()
: Vacía el buffer, escribiendo todos los datos almacenados en él.close()
: Cierra el flujo y libera los recursos asociados.
Ejemplo Práctico
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public class BufferedWriterExample { public static void main(String[] args) { try (BufferedWriter bw = new BufferedWriter(new FileWriter("archivo.txt"))) { bw.write("Primera línea de texto"); bw.newLine(); bw.write("Segunda línea de texto"); } catch (IOException e) { e.printStackTrace(); } } }
Explicación:
- Se crea un
BufferedWriter
que envuelve unFileWriter
. - Se escribe una cadena de texto en el archivo.
- Se escribe un separador de línea usando
newLine()
. - Se escribe otra cadena de texto.
- El bloque
try-with-resources
asegura que elBufferedWriter
se cierre automáticamente.
Ejercicio Práctico
Ejercicio 1: Leer y Escribir Archivos
Objetivo: Leer el contenido de un archivo y escribirlo en otro archivo.
Instrucciones:
- Crea un archivo de texto llamado
entrada.txt
con varias líneas de texto. - Escribe un programa que lea el contenido de
entrada.txt
usandoBufferedReader
y lo escriba en un nuevo archivo llamadosalida.txt
usandoBufferedWriter
.
Solución:
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class CopyFileExample { public static void main(String[] args) { try (BufferedReader br = new BufferedReader(new FileReader("entrada.txt")); BufferedWriter bw = new BufferedWriter(new FileWriter("salida.txt"))) { String linea; while ((linea = br.readLine()) != null) { bw.write(linea); bw.newLine(); } } catch (IOException e) { e.printStackTrace(); } } }
Explicación:
- Se crea un
BufferedReader
para leerentrada.txt
. - Se crea un
BufferedWriter
para escribir ensalida.txt
. - Se lee cada línea de
entrada.txt
y se escribe ensalida.txt
. - Se asegura que ambos flujos se cierren automáticamente usando
try-with-resources
.
Conclusión
En esta lección, hemos aprendido a utilizar BufferedReader
y BufferedWriter
para leer y escribir archivos de manera eficiente en Java. Estas clases son esenciales para manejar operaciones de I/O en aplicaciones del mundo real, donde la eficiencia y la gestión adecuada de recursos son cruciales. Asegúrate de practicar con los ejemplos y ejercicios proporcionados para consolidar tu comprensión. En el próximo tema, exploraremos la serialización en Java.
Curso de Programación en Java
Módulo 1: Introducción a Java
- Introducción a Java
- Configuración del Entorno de Desarrollo
- Sintaxis y Estructura Básica
- Variables y Tipos de Datos
- Operadores
Módulo 2: Flujo de Control
Módulo 3: Programación Orientada a Objetos
- Introducción a la POO
- Clases y Objetos
- Métodos
- Constructores
- Herencia
- Polimorfismo
- Encapsulamiento
- Abstracción
Módulo 4: Programación Orientada a Objetos Avanzada
Módulo 5: Estructuras de Datos y Colecciones
Módulo 6: Manejo de Excepciones
- Introducción a las Excepciones
- Bloque Try-Catch
- Throw y Throws
- Excepciones Personalizadas
- Bloque Finally
Módulo 7: Entrada/Salida de Archivos
- Lectura de Archivos
- Escritura de Archivos
- Flujos de Archivos
- BufferedReader y BufferedWriter
- Serialización
Módulo 8: Multihilo y Concurrencia
- Introducción al Multihilo
- Creación de Hilos
- Ciclo de Vida de un Hilo
- Sincronización
- Utilidades de Concurrencia
Módulo 9: Redes
- Introducción a las Redes
- Sockets
- ServerSocket
- DatagramSocket y DatagramPacket
- URL y HttpURLConnection