Aprende java fácil. Capítulo 14. Leer y escribir en archivos de texto

Capítulo 14. Leer y escribir en archivos de texto

Como ya tenemos el registro de las medicinas robadas por Phil, es hora de chantajearlo. Pedro se reunirá con él hoy mismo. No tenemos ninguna duda de que va a colaborar. Si presentáramos las pruebas, no solo lo despedirían, sino que se vería inmerso en un proceso legal en el cual posiblemente lo condenarían a algún año de prisión.

El plan está saliendo a la perfección. Nadie sospecha nada, y ya hemos superado más de la mitad del camino. Antes del último paso, y de salir por fin, necesitamos aún dos cosas: tener un registro de las medidas de seguridad que nos esperan en el último tramo antes de la salida y acceder a la comunicación de los guardias.

 

No te lo he comentado aún porque es una locura, pero la idea es salir por la puerta principal. Parece un suicidio, pero nadie va a sospechar que alguien tratase de escapar por ahí. Como podrás imaginar, es la parte de la prisión más vigilada y debemos saber exactamente a qué nos enfrentamos.

Para analizar la actividad y las tareas de los guardias, contamos con algunos registros de actividades de los guardias. Estos se encuentran en formato de texto y debemos crear unos programas en Java para ayudarnos a entender la información que contienen e incluso modificarla si es necesario.

Como de costumbre, no tengo ni idea de lo que pasa en el exterior. Espero que Chani se esté encargando de todo y que tenga comunicación con Rich. Espero que cuando salga no me entere de que Rich se ha fugado y que todo este esfuerzo ha sido en vano.

Por otro lado, sigo en contacto con mi familia, pero he perdido algo de contacto con mis amigos cercanos. La verdad es que en estos momentos no quiero tener visitas. Estoy centrado en el plan de escape. No quiero pensar en lo que la gente estará diciendo de mí. Eso podría afectarme. Voy a demostrar mi inocencia y demostrar a todos los que dudan de mí que se equivocan.

 

 

Parece que mi profesor particular ya está listo para enseñarme a leer y editar archivos usando Java. La verdad es que no es un tema que en concreto me apasione demasiado, pero es necesario para continuar con este plan. Bud ya me ha avisado de que es posiblemente la parte más compleja de todo el temario, así que necesito mentalizarme. Aunque con un profesor tan bueno, seguro que no me cuesta nada entenderlo.

Importancia de leer y escribir archivos en Java

 

Como estás dando tus primeros pasos en Java, lo normal es que leer y escribir archivos en Java no sea una prioridad para ti. La mayoría de los programas no necesitan esta funcionalidad. Ahora bien, no sería inteligente obviar que es una herramienta fundamental para muchas aplicaciones. Al leer un archivo, una aplicación puede procesar datos externos y trabajar con ellos. De la misma forma que hasta ahora hemos estado dando instrucciones manualmente a nuestros programas, ahora podrán seguir esas mismas directrices desde una hoja de texto.

De igual forma, escribir en archivos permite a los programas guardar resultados, crear logs o almacenar datos importantes que luego pueden ser utilizados o analizados.

Otra ventaja importante es que Java ofrece una gran variedad de clases y métodos dentro de su biblioteca para manejar archivos de manera segura y sencilla. Esto facilita la manipulación de grandes volúmenes de datos, ya sea en formato de texto o binario. Además, el manejo de archivos en Java es esencial para desarrollar aplicaciones que requieren persistencia de datos, como sistemas de gestión de información o bases de datos.

Leyendo Archivos de Texto

 

En mi opinión, cuando aprendes Java, lo importante no es memorizar conceptos como un loro, sino entender cómo funciona la programación y comprender la lógica que hay detrás. Si lo haces de esta forma, te va a resultar mucho más sencillo; la sensación de progreso va a ser mucho más satisfactoria y, además, sabrás programar para el resto de tu vida. Sí que es cierto que si pasas un tiempo largo sin tocar código es posible que no recuerdes casi nada, pero dedicándole unas pocas horas, esos conocimientos vuelven rápidamente a tu cabeza.

Después de tantas horas programando, ya tendrás un conocimiento bastante avanzado sobre la sintaxis de Java. Lo que al principio parecía imposible de aprender ahora tiene sentido y resulta hasta sencillo. No todo el mundo llega hasta aquí, así que te doy la enhorabuena.

Para este tema en concreto, y muy a mi pesar, vamos a tener que aprender alguna cosa de memoria. Para que nuestros programas puedan leer y escribir en texto, tenemos que importar una serie de clases.

Importar las clases necesarias para leer archivos

 

import java.io.File; import java.io.FileReader;

import java.io.BufferedReader; import java.io.IOException;

 

Crear un objeto file que represente el archivo de texto

 

Evidentemente, si tienes un archivo (file) con el que quieres trabajar, no necesitas crearlo, pero lo que sí debes hacer es conocer la ruta en el que el archivo está ubicado en tu ordenador.

File archivo = new File(«ruta/al/archivo.txt»);

Este es un ejemplo de una ruta real de un archivo que uso para los ejercicios de ejemplo: File archivo = new File(«C:\\Users\\ribeh\\IdeaProjects\\Proyecto 1\\actividad.txt»);

 

Leer el archivo utilizando FileReader y BufferedReader

 

Me gustaría decirte que el programa ya puede leer los datos de nuestro archivo e incluso imprimirlos en la pantalla, pero no es así. Aún queda un paso más.

Necesitamos usar try y catch, pero como ya sabemos cómo funcionan, no habrá ningún problema.

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Main {

    public static void main(String[] args) {

        try (FileReader fr = new FileReader("actividad");
             BufferedReader br = new BufferedReader(fr)) {

            String linea;

            while ((linea = br.readLine()) != null) {
                System.out.println(linea); // Imprime cada línea del archivo
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

Al FileReader lo llamamos “fr” y al BufferedReader “br”, pero puedes utilizar el nombre que más te convenga. Después creamos un bucle while que recorre las líneas de nuestro archivo y va imprimiendo siempre y cuando haya datos para hacerlo. Lo último es el bloque de catch por si hay alguna excepción.

 

Escribiendo Archivos de Texto

 

De nuevo nos va a tocar importar las clases necesarias. En este caso son estas:

import java.io.File; import java.io.FileWriter;

import java.io.BufferedWriter; import java.io.IOException;

 

Por supuesto, vamos a necesitar disponer de la ruta de nuestro archivo. Ya he explicado como debe ser la ruta:

File archivo = new File(«ruta/al/archivo.txt»);

Este es un ejemplo de una ruta real de un archivo que uso para los ejercicios de ejemplo: File archivo = new File(«C:\\Users\\ribeh\\IdeaProjects\\Proyecto 1\\actividad.txt»);

 

Escribir en el archivo utilizando FileWriter y BufferedWriter

 

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class Main {

    public static void main(String[] args) {
        String actividad = "actividad.txt"; // Define el nombre del archivo

        try (FileWriter fw = new FileWriter(actividad);
             BufferedWriter bw = new BufferedWriter(fw)) {

            bw.write("Hola, este es un nuevo archivo de texto.");
            bw.newLine(); // Añade una nueva línea
            bw.write("Aquí podemos agregar más contenido.");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

Hemos utilizado “Fw” para denominar a nuestro FileWriter y “Bw” para el BufferedWriter, pero, como en el caso anterior, podríamos ponerles otro nombre si nos conviene más. En este caso, no nos es necesario crear un bucle dentro del bloque try porque no necesitamos ir recorriendo todas las líneas. Solo necesitamos añadir una o varias líneas. Por último, como es lógico, cerramos con el bloque catch por si sucede una posible excepción.

Resumen de lo aprendido

 

Para leer archivos de texto en Java, lo primero que debemos hacer es importar las clases File, FileReader, BufferedReader e IOException. Para leer un archivo, debes elegir dicho documento y copiar su ruta. Luego, utilizas FileReader y BufferedReader para leer el archivo línea por línea y mostrar su contenido. Es esencial manejar posibles excepciones con bloques try y catch para que el programa pueda gestionar cualquier error que surja. Por suerte, aprendimos a hacerlo en el tema anterior.

Vamos con la otra cara de la moneda: escribir en esos archivos de texto. Para empezar, también necesitas importar algunas clases, que en este caso son: File, FileWriter, BufferedWriter e IOException. Igual que antes, vamos a necesitar la ruta de nuestro archivo. Después, usaremos FileWriter y BufferedWriter para escribir contenido en el archivo, añadiendo nuevas líneas cuando sea necesario. Es crucial manejar excepciones en este proceso para asegurarte de que cualquier problema durante la escritura sea tratado de manera adecuada.

Estos pasos te permiten leer y escribir archivos de texto en Java de forma efectiva, gestionando errores y excepciones de manera controlada.