Leer un archivo de texto en Java





Hola y buen día a todos mis lectores, al revisar mis entradas hoy, me di cuenta de algo, tengo una que se trata sobre cómo escribir archivos de texto en Java, pero no tengo una sobre como leerlos, quizá para algunos esto sea muy fácil de hacer, pero puede que a otros se les dificulte un poco, así que bueno, aquí les diré como:



“Directo al grano”
Esto es para quienes simplemente quieren saber cómo hacerlo sin más explicación, yo no recomendaría simplemente copiar el código y “a lo que sigue”, siempre es bueno saber el porqué usamos tal clase o ponemos las instrucciones de cierta forma, ya saben, para el futuro, de todos modos, aquí les va el código:
Obviamente para la prueba hay que escribir y guardar algo de texto en un archivo llamado nota.txt en C:/ de lo contrario nos lanzará una excepción del tipo FileNotFoundException en el bloque try/catch (el primer catch en el bloque de arriba). La salida en consola que obtuve al correr el código fue la siguiente:




ESTÁS
EN

EL

BLOG

DE

BARO
:D


¿Quiere saber más?
Para quienes les interese, en esta sección veremos paso a paso el código de arriba y le daremos algunas mejoras (se aceptan sugerencias abajo) así que aquí va la revisión y explicación del código.

Primero que nada vemos varias líneas que inician con la palabra reservada import, para quienes no saben, la palabra reservada import es para utilizar la clase o paquete escrito después del mismo, en este caso: java.io.BufferedReader, java.io.File, java.io.FileNotFoundException, etc.

Después vemos el nombre de la clase, que es LectorTexto, claro que podemos ponerle el nombre que queramos, no importa, después vemos el comentario para el método leerTexto, ahí normalmente ponemos una breve descripción de lo que hace el método, el o los parámetros y lo que regresa (si no es void).

El método leerTexto
Para empezar el método leerTexto, pide como argumento un String, en el cual pondremos la ruta del archivo que queremos leer, y lo que devuelve (como lo dice el comentario del método) es el texto dentro del archivo. Ahora, para convertir el texto pasado como argumento en un archivo que se pueda leer, lo ponemos en el constructor de File de esta forma: File archivo = new File(ruta); Y listo, la ruta que fue pasada como argumento ahora es un archivo que apunta a nuestro texto.

Pero tener un archivo apuntando a nuestra nota no es suficiente, se necesita de alguien que lo lea, en este caso utilizamos la clase FileReader la cual nos permite leer el archivo que pasemos como argumento en su constructor: FileReader fr = new FileReader(archivo); Y con esto tenemos el lector, el cual por desgracia solo nos devuelve enteros al leer el archivo, que se podrían convertir en texto, pero “¿No podría hacerlo otro?” En este caso, sí, utilizamos BufferedReader para hacer más eficiente la lectura y que se haga en líneas, lo cual nos facilita mucho las cosas, para poner un búfer a nuestro lector de archivo (FileReader) hacemos esto: BufferedReader bf = new BufferedReader(fr);

¡Perfecto! Ahora tenemos el búfer que nos ayudará mucho en la lectura del archivo, pero no es suficiente, ¿Qué pasa si el archivo contiene varias líneas? Para eso tenemos el ciclo while en nuestro código y escribimos las sentencias necesarias para hacer que el búfer haga la lectura de todas las líneas en el archivo (ver el código de arriba) y opcionalmente, devolverlas en líneas separadas gracias a la propiedad line.separator, utilizamos también la clase StringBuffer para ir agregándole el texto por cada línea que sea leída por el búfer (y que no sea null).
Al finalizar el ciclo while asignamos a nuestro atributo texto lo que hay dentro del StringBuffer, así: texto = sbf.toString();

Mejorando el lector de archivo
Nuestra pequeña y simple clase lee los archivos de texto de manera muy eficiente, pero, lo que no es tan eficiente, es la forma en que señalamos que archivo queremos leer, en especial con rutas muy largas, pero afortunadamente hay una solución, ¡Un selector de archivo! Que permitirá al usuario elegir el archivo que se quiere leer de una forma mucho más cómoda y fácil.

Agregando un selector de archivo
Agregar un selector de archivo a nuestro lector de texto será algo muy fácil, crearemos un nuevo método llamado lanzarSelector() que mostrará el selector de archivo que va a devolver la ruta del archivo que se ha seleccionado para después leer el texto dentro de él y mostrarlo ya sea en la consola o en una interfaz con JTextField, JLabel o quizá un JTextArea (ese proyecto de la interfaz te lo dejo a ti).
A continuación se muestra el nuevo código ya con el selector de archivo:
Esto facilita muchísimo las cosas, ahora el método lanzarSelector lo hace todo, lo mejor es que podemos usar este código para muchas cosas, tanto el lector de texto, como el selector de archivo. Otra cosa muy importante, es que, el lector de archivo no lee solamente archivos con extensión *.txt, puede leer cualquier archivo y mostrarlo en forma de texto, pruébalo.

Y bien, esto es todo por este artículo, espero les haya gustado, y ya saben, suscríbanse en la parte superior derecha con su email si les gustan mis entradas, dudas, peticiones, comentarios o criticas son bien recibidas en la parte de abajo, saludos a todos :D.


Entradas Relacionadas:


Comentarios