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
BufferedReaderyBufferedWriter. - Aprender a utilizar
BufferedReaderpara leer archivos. - Aprender a utilizar
BufferedWriterpara 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
BufferedReaderque 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-resourcesasegura que elBufferedReaderse 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
BufferedWriterque 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-resourcesasegura que elBufferedWriterse 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.txtcon varias líneas de texto. - Escribe un programa que lea el contenido de
entrada.txtusandoBufferedReadery lo escriba en un nuevo archivo llamadosalida.txtusandoBufferedWriter.
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
BufferedReaderpara leerentrada.txt. - Se crea un
BufferedWriterpara escribir ensalida.txt. - Se lee cada línea de
entrada.txty 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
