Gruki Logo

Gruki - Documentación de Programación

Java

BufferedReader y BufferedWriter en Java: Lectura y Escritura Eficiente de Archivos

Aprende a usar BufferedReader y BufferedWriter en Java para leer y escribir archivos de manera eficiente. ¡Como enviar mensajes por correo postal pero mucho más rápido!

¿Alguna vez has tenido que leer un libro muy largo? Leer cada letra una por una sería muy lento, ¿verdad? BufferedReader y BufferedWriter son como tener un ayudante que te ayuda a leer y escribir archivos de texto en Java mucho más rápido. En lugar de leer o escribir un solo carácter a la vez, leen o escriben bloques de caracteres, ¡lo que acelera enormemente el proceso!

Imagina que estás enviando cartas a todos tus amigos. En lugar de enviar cada carta individualmente, podrías apilarlas y enviarlas todas juntas en un solo paquete. BufferedReader y BufferedWriter hacen algo similar con los archivos. BufferedReader agrupa la información para leerla más rápido, y BufferedWriter agrupa la información para escribirla más rápido.

BufferedReader: Leyendo Archivos como un Lector Veloz

BufferedReader facilita la lectura de texto desde un archivo o cualquier flujo de entrada (como la entrada del teclado). Piensa en ello como una persona que lee un libro en voz alta, pero en lugar de leer cada letra, lee frases completas de una vez.

Imagina que estás leyendo un libro con muchas páginas. En lugar de leer cada palabra individualmente, BufferedReader lee un párrafo completo y lo guarda en su memoria. Luego, te da las palabras del párrafo una por una. ¡Así puedes leer el libro mucho más rápido!

Puntos importantes:

  • El método `readLine()` de BufferedReader lee una línea completa de texto hasta que encuentra un salto de línea (como cuando presionas 'Enter' en el teclado). Si no hay más líneas para leer, devuelve `null`.
  • Es importante cerrar el BufferedReader después de usarlo para liberar los recursos del sistema. Es como apagar la luz después de salir de una habitación.

BufferedWriter: Escribiendo Archivos como un Escritor Eficiente

BufferedWriter ayuda a escribir texto en un archivo o cualquier flujo de salida. Es como tener un escritor que escribe frases completas en un libro, en lugar de escribir letra por letra.

Imagina que estás escribiendo un cuento. En lugar de escribir cada letra en un pergamino separado, BufferedWriter escribe varias letras en un borrador y luego las pasa al pergamino final todas juntas. ¡Así puedes escribir el cuento mucho más rápido!

Puntos importantes:

  • El método `write()` de BufferedWriter escribe una cadena de texto en el archivo. El método `newLine()` inserta un salto de línea (como cuando presionas 'Enter' en el teclado).
  • Es importante llamar al método `flush()` de BufferedWriter para asegurarse de que todos los datos se hayan escrito en el archivo. Es como enviar el paquete de cartas a la oficina de correos.
  • Al igual que con BufferedReader, es importante cerrar el BufferedWriter después de usarlo.

Ejemplos de Código

Ejemplo de cómo leer un archivo usando BufferedReader y escribir en otro archivo usando BufferedWriter. Lee un archivo llamado 'entrada.txt', lo convierte a mayúsculas y lo escribe en un archivo llamado 'salida.txt'.

Lenguaje: Java
java

Explicación del código:

  1. Línea 1: La primera línea `import java.io.*;` importa todas las clases necesarias para la entrada y salida de datos, como BufferedReader, BufferedWriter, FileReader y FileWriter.
  2. Línea 2: La clase `EjemploBufferedReaderBufferedWriter` contiene el método `main`, que es donde comienza la ejecución del programa.
  3. Línea 3: El bloque `try (BufferedReader br = new BufferedReader(new FileReader("entrada.txt")); BufferedWriter bw = new BufferedWriter(new FileWriter("salida.txt")))` crea instancias de BufferedReader para leer desde 'entrada.txt' y BufferedWriter para escribir en 'salida.txt'. El uso de `try-with-resources` asegura que los recursos (los archivos) se cierren automáticamente al finalizar el bloque, incluso si ocurre una excepción.
  4. Línea 4: `String linea;` declara una variable para almacenar cada línea que se lee del archivo.
  5. Línea 5: El bucle `while ((linea = br.readLine()) != null)` lee el archivo línea por línea. `br.readLine()` lee una línea completa y la asigna a la variable `linea`. El bucle continúa hasta que `br.readLine()` devuelve `null`, lo que indica el final del archivo.
  6. Línea 6: `String lineaMayusculas = linea.toUpperCase();` convierte la línea leída a mayúsculas.
  7. Línea 7: `bw.write(lineaMayusculas);` escribe la línea en mayúsculas en el archivo 'salida.txt'.
  8. Línea 8: `bw.newLine();` agrega un salto de línea después de escribir cada línea, para que las líneas no se junten en el archivo de salida.
  9. Línea 9: `System.out.println("Archivo procesado con éxito.");` imprime un mensaje indicando que el archivo se ha procesado correctamente.
  10. Línea 10: El bloque `catch (IOException e)` captura cualquier error que pueda ocurrir durante la lectura o escritura del archivo. `System.err.println("Ocurrió un error: " + e.getMessage());` imprime un mensaje de error en la consola.

Recursos relacionados

Explora más contenido relacionado con Uso de BufferedReader y BufferedWriter. para profundizar tus conocimientos.