Manipulacion de archivos:lectura de un archivo de texto en java

Leer un archivo de texto en java no es muy complicado, en resumen es un proceso muy similar a leer texto escrito del teclado, y para hacerlo necesitaremos hacer uso de las siguientes clases, la clase File, FileReader y BufferedReader.

Por favor ve el siguiente vídeo para ver como se lee archivos de texto en java y ver el programa de lectura en ejecución, espero en que te ayude a entender mejor como se leen archivos de texto en java, o si no sigue leyendo este articulo para copiar el codigo fuente directamente y ver el modo de uso.

Video:

A continuación he colocado el método “leer” el cual tiene un parametro llamado “nombre” el cual es el nombre del archivo, en el coloca preferentemente la ruta completa del archivo de texto del cual deseas leer su contenido.
El codigo de lectura es el siguiente:

Descarga:

Clase Archivo.java

Codigo fuente

 

import java.io.*;

public String leer(String nombre)

//El parametro nombre indica el nombre del archivo por ejemplo "prueba.txt" 

{

try{

File f;
FileReader lectorArchivo;

//Creamos el objeto del archivo que vamos a leer
f = new File(nombre);

//Creamos el objeto FileReader que abrira el flujo(Stream) de datos para realizar la lectura
lectorArchivo = new FileReader(f);

//Creamos un lector en buffer para recopilar datos a travez del flujo "lectorArchivo" que hemos creado
BufferedReader br = new BufferedReader(lectorArchivo);

String l="";
//Esta variable "l" la utilizamos para guardar mas adelante toda la lectura del archivo

String aux="";/*variable auxiliar*/

while(true)
//este ciclo while se usa para repetir el proceso de lectura, ya que se lee solo 1 linea de texto a la vez
{
aux=br.readLine();
//leemos una linea de texto y la guardamos en la variable auxiliar
if(aux!=null)
l=l+aux+"n";
/*si la variable aux tiene datos se va acumulando en la variable l,
* en caso de ser nula quiere decir que ya nos hemos leido todo
* el archivo de texto*/

else
break;
}

br.close();

lectorArchivo.close();

return l;

}catch(IOException e){
System.out.println("Error:"+e.getMessage());
}
return null;
}

 

Modo de uso:

 

/*simplemente manda a llamar el metodo colocando en su argmento el nombre del archivo*/
leer("C:Usersnombredemipcprueba.txt");

 

Como resultado leeras el archivo de texto..

¿Problemas con la ruta o Path? Como seleccionar gráficamente un archivo para leerlo

Simplemente con una pequeña modificación a nuestro codigo utilizando la libreria javax.swing con el objeto JFileChooser

 

Creamos un objeto JFileChooser el cual sirve para elegir graficamente un archivo, lo elegimos y con el codigo acontinuación generaremos una variable tipo String(texto) que contendra ela ruta o el Path completo hacia nuestro archivo, luego solo ejecutamos el metodo “leer”.

 

javax.swing.JFileChooser j= new javax.swing.JFileChooser();

j.showOpenDialog(j);

String path= j.getSelectedFile().getAbsolutePath();

leer(path);

 

Codigo para leer un archivo de texto gráficamente:

Como nota este método es simple y esta diseñado para leer archivos de texto, leer otro tipo de archivos ocasionara que el programa se cierre.

El codigo es el siguiente:

 

public  String leerGrafico()

{

File f;

javax.swing.JFileChooser j= new javax.swing.JFileChooser();

j.showOpenDialog(j);

try{

String path= j.getSelectedFile().getAbsolutePath();

String lectura="";

f = new File(path);

try{

FileReader fr = new FileReader(f);

BufferedReader br = new BufferedReader(fr);

String aux;

while((aux = br.readLine())!=null)

lectura = lectura+aux+"n";

}catch(IOException e){}

return lectura;

}catch(NullPointerException e){

javax.swing.JOptionPane.showMessageDialog(j, "Has seleccionado cerrar programa, saliendo...");

System.exit(0);

}return null;

}

 

 

Espero que esto haya servido de algo, para comprender mejor como funciona el programa y verlo en funcionamiento colocare un video en esta página lo mas pronto posible. No olviden comentar.

 

 

Acerca del autor:

Mi nombre es Jorge Villalobos, soy Colombiano de nacimiento y resido en México desde 2005,actualmente soy el creador de codigoprogramacion.com Soy ingeniero en tecnologías de información y comunicaciones y trabajo de tiempo completo desarrollando aplicaciones web. En general me considero un tipo normal, me gusta salir, divertirme, y uno de mis hobbies es programar y hacer tutoriales para compartir conocimiento, me gusta la pizza, el ajedrez y tomar una que otra cerveza los fines de semana. Espero que este proyecto ayude a ayudar a los demás.

Twitter del autor:

22 comments

  1. Jose says:

    Hola. muy buen articulo.
    consulta
    si se modifica el archivo de texto, por ejemplo desde el bloc de notas, en el programa igual se vera el cambio automaticamente o deberé ejecutar nuevamente el programa?

  2. Soul Luos says:

    Muchas Gracias Jorge saludos desde Colombia
    Desde la consola y usando el JFileChooser funciono sin problemas
    Un abrazo !

  3. Carlos says:

    Buenas Jorge,

    he visto que en tu código, cuando guardas el texto en la variable auxiliar haces un +”n”:
    l=l+aux+”n”;
    No entiendo esa concatenación de la letra n, quizá sería un \n??

    Saludos.

  4. Sam says:

    Muy buen tutorial, pero el problema es que el archivo para descargar ya no se encuentra, si pudieras actualizarlo, estaría agradecido.

  5. vero says:

    Hola amigo oye una pregunta y después de leer el archivo txt sabes como puedo
    separar las palabras que contenga el archivo???

    y asi contartas sin signos,espacios,solo las puras palabras??

  6. Elver Gudo says:

    Quiero Sexo

  7. winer says:

    hola jorge v. quisiera saber si tienes alguna idea de como saber cuantas veces los usuarios ejecutan mi aplicación en java, muchas gracias de antemano paisano.

  8. Wolfmarel says:

    Hola, tengo un proyecto .jar que lo ejecutan mis clientes en sus máquinas locales a través de la JVM, ahora se requiere que el proyecto sea web, que esté alojado en un servidor y que los archivos .txt los carguen los clientes a través del sistema, el cual debe leerlos, validarlos y luego guardarlos en BD. El problema es que el JFileChooser no funciona allí, intenté usar Fileupload pero cuando intento obtener el Path completo Fileupload no lo permite, solo ubica el archivo si éste está en el directorio raíz del cliente y así no me sirve. ¿Qué otra opción tengo?

  9. Hernan says:

    amigo un saludo desde Colombia. me podrias ayudar en lo siguiente, tengo un programa CENSO que corre con EXECUTABLE JAR FILE. pero quisiera tomar los registros o datos del censo y llevarlos a excel para poderlos filtrar por municipios. el programa tiene un archivo llamado CENSO que es tipo DATA, como hago para ver o exportar la informacion del archivo DATA. mil gracias.

  10. Andrea says:

    hola me podrias pasae el codigo del programa? xq lo he copiado exactamente igual a tu tutorial pero me sale en consola solamente “NULL” no se xq… me podrias ayudar con eso xfa!!!

  11. jose says:

    Hola.A ver si me puedes hecar una mano.Los datos por consola.
    Se trata de hacer una aplicación en Java que gestione los clientes de una empresa. Esos datos, se almacenarán en un fichero serializado, denominado clientes.dat.
    Los datos que se almacenarán sobre cada cliente son:
    • NIF.
    • Nombre.
    • Teléfono.
    • Dirección.
    • Deuda.
    Mediante un menú se podrán realizar determinadas operaciones:
    • Añadir cliente. Esta opción pedirá los datos del cliente y añadirá el registro correspondiente en el fichero.
    • Listar clientes. Recorrerá el fichero mostrando los clientes almacenados en el mismo.
    • Buscar clientes. Pedirá al usuario el nif del cliente a buscar, y comprobará si existe en el fichero.
    • Borrar cliente. Pedirá al usuario el nif del cliente a borrar, y si existe, lo borrará del fichero.
    • Borrar fichero de clientes completamente. Elimina del disco el fichero clientes.dat
    • Salir de la aplicación.
    Comentarios sobre el desarrollo del programa y las consideraciones oportunas que se necesiten para entender cómo se ha realizado.

    Opciones para la creación del programa:

    1) Creamos una clase cliente y le ponemos los metodos get y set.
    2) Creamos un fichero de la forma: fichero = new FileOutputStream( ruta, true );
    3) Creamos un objeto del tipo del fichero: registro = new ObjectOutputStream(fichero); para poder escribir en el fichero el cliente de la forma: registro.writeObject(cliente);
    4) Para escribir un cliente en el fichero conviene que leeamos el fichero y lo pasemos a una lista y el cliente en lugar de guardarlo directamente como anteriormente lo metamos en la lista y luego copiamos la lista en el fichero porque si no te escribe en la cabecera del fichero y te lo rompe, lo hacemos así:
    List listadelfichero;
    listadelfichero = new ArrayList();
    fichero = new FileInputStream( ruta );
    registro = new ObjectInputStream(fichero);
    para leer del fichero: cliente = (Clientes) registro.readObject()
    para meterlo en la lista: listadelfichero.add(cliente) ;

  12. Jean says:

    Interesante tu programa, pero tengo una consulta si lo que quiero es leer una imagen que esta guardada en PDF y visualizarla en un contenedor en java como seria eso? … si sabes me puedes respondar a mi correo porfa, te lo agradeceria.

  13. Fernando Guzman says:

    Hola mi estimado, excelente codigo para leer archivos en formato txt, me podrias ayudar a implementarlo pero via web primefaces, ?

  14. Miguel says:

    amigo este programa es muy bueno seria tan amable de pasar otra vez el enlace de la descarga del codigo completo porfavor

  15. wuilkys says:

    Hola jorge oye por favor podrias subir nuevamente el link para descargar el codigo fuente, te lo agradeceria mucho…

  16. Adrian says:

    Oie tengo una duda cuando corro el programa todo me da bien me deja selecciona el archivo y todo pero cuando lo abro solo me aparese la letra “l” o dependiendo de lo que qe tenga en el sout del main :S no se en que me equivocaria no se si me podrias ayudar

  17. Matías says:

    Excelenteee!! Mi problema radica en que mi método tiene que devolver un String []. Me podrías ayudar con eso?

  18. FRANK says:

    MUCHAS GARCIAS POR LOS TUTORIALES ME HAS SALVADO DE APUROS

    • damian aiquipa taipe says:

      me parece interesante me podrias pasar el codigo del formulario que lo muestras al principio el buscador o el video tutorial

Leave a Reply to Fernando Guzman Cancel reply

Your email address will not be published. Required fields are marked *