En esta nueva entrada, veremos la aplicación de un método en el lenguaje de programación JAVA, cuya función es leer archivos de texto desde nuestra aplicación y mostrar su contenido.
Método para leer archivos de texto:
public void leerarchivo(String ruta){
BufferedReader buffer = null;
try{
buffer = new BufferedReader(new InputStreamReader(new FileInputStream(ruta), "ISO-8859-1"));
boolean lecturanula = false;
while(!lecturanula){
try{
String linea = buffer.readLine();
if(linea == null){
lecturanula = true;
System.out.println("terminó lectura");
}else{
System.out.println(linea);
}
}catch(IOException ex){
System.out.println(ex);
}
}
}catch(UnsupportedEncodingException ex){
System.out.println("Error de codificación: "+ex);
}catch(FileNotFoundException ex) {
System.out.println("Error con la ubicación y/o existencia del archivo: "+ex);
}finally{
try{
buffer.close();
}catch(IOException ex) {
System.out.println("Error al intentar cerrar el Buffer: "+ex);
}
}
}
Método del botón desde donde llamaremos al método anterior:
private void btnLeerActionPerformed(java.awt.event.ActionEvent evt) { leerarchivo("src/archivo.txt"); }
Instrucciones y Recomendaciones
1- Copia y pega el código resaltado en amarillo, dentro de la Clase en la cual se llevará acabo la lectura de los archivos de texto. Este código debe ir entre las llaves "{}" de la Clase Java en la cual lo implementaremos, y fuera de cualquier otro método.
2- Lo primero que hacemos es crear el método, dándole las características y/o propiedades de "public" y "void", luego le damos un nombre "leerarchivo", seguidamente entre paréntesis "()", le pasamos un parámetro de tipo "String" y que corresponde a la ruta y nombre del archivo que deseamos abrir, por último delimitamos nuestro método con las llaves "{}" que contendrán todo el código que ejecutará la acción que deseamos. Teniendo en cuenta cada parte del código, esta línea quedaría de la siguiente forma:
public void leerarchivo(String ruta){}
3- Ahora dentro de las llaves del método creado en el punto anterior; primeramente, asignamos el valor "null" a un objeto del tipo BufferedReader, al cual llamaremos "buffer", este permitirá que nuestro programa pueda recibir y leer caracteres. Teniendo en cuenta cada parte del código, esta línea quedaría de la siguiente forma:
BufferedReader buffer = null;
4- Crearemos un bloque try-catch-catch-finally, ya que el código a implementar podría producir varias excepciones importantes, por lo cual se emplean 2 "catch". Dentro del "try", en la primera parte lo que hacemos es usar el objeto "buffer", creado en el punto anterior, procederemos a instanciarlo usando la línea "new BufferedReader()", a la línea anterior le pasaremos como parámetro una instancia de la Clase "InputStreamReader"; es decir, "new InputStreamReader()" esto de acuerdo a la documentación de dicha clase, nos permitirá leer bytes y decodificarlos en caracteres utilizando un juego de caracteres especificado; ahora, a la línea anterior le pasamos como parámetros, primero una instancia de la Clase "FileInputStream", con la cual podemos obtener los bytes de un archivo específico, es por eso que se le pasa como parámetro, valga la redundancia el parámetro tipo "String" del método en el que estamos trabajando; es decir, "new FileInputStream(ruta)"; luego el segundo parámetro que le pasamos a la línea "new InputStreamReader()", será un "String", el cual corresponde al juego de caracteres que usaremos para decodificar los bytes obtenidos de nuestro archivo, lo cual nos permitirá evitar errores generalmente con las letras acentuadas y demás caracteres especiales; en este caso el parámetro será "ISO-8859-1".
Luego en otra línea de código procedemos a crear e inicializar una variable de tipo "boolean", la cual llamaremos "lecturanula"; esta la usaremos para avisarle al programa cuando ya no hayan caracteres que leer en nuestro archivo.
Teniendo en cuenta cada parte del código, este fragmento quedaría de la siguiente forma:
buffer = new BufferedReader(new InputStreamReader(new FileInputStream(ruta), "ISO-8859-1"));
boolean lecturanula = false;
5- Siguiendo dentro del "try" creado en el punto anterior, y luego de la última línea de código también del punto anterior; implementaremos un ciclo condicional "while", al cual le pasamos como condición, que mientras que el valor de la variable "lecturanula" sea "false", ejecute el contenido que en dicho ciclo haya, ese contenido irá delimitado por unas llaves "{}". Teniendo en cuenta cada parte del código, esta línea quedaría de la siguiente forma:
while(!lecturanula){}
6- Dentro de las llaves del ciclo "while" del punto anterior, crearemos un bloque "try-catch". Dentro del "try", creamos una variable tipo "String" la cual llamaremos "linea", donde guardaremos cada línea de texto que sea leída de nuestro archivo, por ello usamos el objeto "buffer", empleando a su vez el método ".readLine();".
Seguidamente empleamos un condicional "if-else", donde usamos la condición "linea == null" verificando que si no hay más caracteres que leer de nuestro archivo, se proceda a cambiar el valor de la variable "lecturanula" a "true", para que el ciclo "while" se detenga, pero en caso contrario, si hay caracteres que leer de nuestro archivo, se ejecutará lo que hay en el "else"; es decir, imprimimos y/o mostramos por consola, el texto leído de nuestro archivo.
En el dado caso que se produzca un error del tipo "IOException" a la hora de leer las líneas de nuestro archivo, se procederá a capturar en la variable "ex" en el "catch" y a mostrarlo por consola.
Teniendo en cuenta cada parte del código, este fragmento quedaría de la siguiente forma:
try{
String linea = buffer.readLine();
if(linea == null){
lecturanula = true;
}else{
System.out.println(linea);
}
}catch(IOException ex){
System.out.println(ex);
}
7- En el primer "catch" del bloque "try-catch-catch-finally" creado en el punto 4, capturaremos un error del tipo "UnsupportedEncodingException" (problema con la codificación de los caracteres) en una variable, en este caso "ex" e imprimimos dicho error por consola. En el segundo "catch" de este mismo bloque, capturaremos un error del tipo "FileNotFoundException" (problema a la hora de cargar y/o encontrar el archivo a leer) en una variable que llamaremos también "ex", y mostramos dicho error por consola. Teniendo en cuenta cada parte del código, este fragmento quedaría de la siguiente forma:}catch(UnsupportedEncodingException ex){ System.out.println("Error de codificación: "+ex); }catch(FileNotFoundException ex) { System.out.println("Error con la ubicación y/o existencia del archivo: "+ex); }
8- En la parte del "finally" del bloque "try-catch-catch-finally" creado en el punto 4, procedemos a crear un bloque "try-catch". Dentro del "try", procederemos a cerrar el proceso de lectura de nuestro archivo, para ello usamos el objeto "buffer" creado en el punto 3, e implementando el método ".close();"; luego, en la parte del "catch" capturaremos una excepción del tipo "IOException" en la variable "ex" en el caso que se produzca un error a la hora de cerrar el objeto "buffer", y procedemos a mostrar dicho inconveniente, por consola.
Teniendo en cuenta cada parte del código, este fragmento quedaría de la siguiente forma:
finally{
try{
buffer.close();
}catch(IOException ex) {
System.out.println("Error al intentar cerrar el Buffer: "+ex);
}
}
9- Copia y pega el código resaltado en azul, dentro del método del botón asignado para ejecutar la tarea de leer archivos de texto. Lo que hacemos en esta línea es llamar al método que creamos con anterioridad "leerarchivo", y pasarle como parámetro un "String", que contiene la ruta, y el nombre junto con la extensión del archivo que queremos que nuestro programa lea:
leerarchivo("src/archivo.txt");
10- Ahora sólo basta con ejecutar tu proyecto y hacer las respectivas pruebas.
11- Si es de tu interés, puedes seguir el Curso de Java, que se está realizando mediante videotutoriales y con eBooks, en el Blog UH T.I.S
Si te fue de gran ayuda esta información, no olvides compartirla con tus amigos.
Si tienes dudas o sugerencias al respecto; puedes dejarnos tus comentarios.
Bendiciones...
Si tienes dudas o sugerencias al respecto; puedes dejarnos tus comentarios.
Bendiciones...
No hay comentarios.:
Publicar un comentario