lunes, 25 de febrero de 2013

Lectura y Escritura de Archivos de Texto

Buenas amigos, en este nuevo tema vamos a manejar la creación, y posterior lectura y escritura de un archivo de texto. Es una cosa muy sencilla y a la postre una utilidad muy importante para el futuro desarrollador.


Para la escritura de un archivo vamos a utilizar las siguientes clases:

  • File: Que va a ser la encargada de crear el archivo.
  • FileWriter: Que va a ser la encargada de escribir en el archivo.
  • BufferedWriter: Será la que maneje el buffer para una correcta inserción de los caracteres.
Bien, los pasos a seguir, para escribir un archivo, son muy sencillos:
      1. Crear un archivo o cargar un archivo por medio de File.
      2. Pasárselo a FileWriter para su escritura.
      3. Pasarle el FileWriter a BufferedWriter para su manejo.
      4. Pasarle el texto a escribir.
      5. Cerrar el buffer.

El archivo es creado en la carpeta de nuestro proyecto,podéis ir a verla, podría cargarlo en vez de crearlo y escribir en él, sólo tendría que pasarle la ruta donde lo tuviese. 

Como podéis observar, no es muy complicado.
      • Creo un File con el nombre que va a llevar y extensión:
        • File f=new File("HolaMundo.txt");
      • Se lo paso a FileWriter para su escritura.
        • FileWriter fw=new FileWriter(f);
      • Este, es pasado a su vez a al buffer por medio de BufferedWriter
        • BufferedWriter bw=new BufferedWriter(fw);
      • Le pasamos el texto que queremos que tenga.
        • bw.write("Hola Mundo");
      • Cerramos el buffer.
        • bw.close(). Aunque parezca una tontería, he visto muchísimos errores en escritura y lectura de archivos por no cerrar el buffer. 
Esto en cuanto a la escritura de archivos, ahora vamos a ver como se leen.

bien, para leerlos, se utilizan las mismas clases que con la escritura pero de lectura:
  • File: Para cargar nuestro archivo.
  • FileReader: Para leer nuestro archivo
  • BufferedReader: Para una correcta lectura de los caracteres.
Los pasos a seguir no difieren mucho de la escritura de un archivo, solo se distinguen por los últimos pasos:
      1. Cargamos el archivo por medio de File.
      2. Se lo pasamos a FileReader para que lea su contenido.
      3. Este es pasado a BufferedReader para su manejo.
      4. Creamos un bucle para que lea todas las lineas.
      5. Mostramos por pantalla las lineas que ha leido.
      6. Cerramos el buffer.

Como ya os dije, las mayores diferencias con respecto a la escritura de archivos se ve al final, ya que tenemos que estar leyendo lineas del documento hasta que no queden más, utilizando para ello un bucle "while". También creo un objeto String para que almacene las lineas y las vaya mostrando por pantalla.
      • Cargo el archivo mediante la clase File
        • File f =new File("HolaMundo.txt");
      • Se lo paso a la clase FileReader para su lectura.
        • FileReader fr =new FileReader (f);
      • Del mismo modo, se lo pasamos al buffer para que lo manipule.
        • BufferedReader br=new BufferedReader(fr);
      • Creamos un bucle while donde almacenamos en un objeto de tipo String las lineas mientras sigan habiendo y lo mostramos por pantalla.
        • while((s=br.readLine())!=null){
        • System.out.println(s);
        • }
      • Cerramos el buffer.
        • br.close().
Un pequeño detalle que no he mencionado, y es que tanto la Escritura en un archivo y la Lectura producen excepciones que deben ser capturadas, IOException y FileNotFoundException,(aunque capturando IOException es tontería capturar FileNotFoundException, ya que es una subclase) deberéis capturarlas. Yo las tengo metidas en métodos y capturadas por un throw.


Y ya está, no es muy complicado leer y escribir archivos de texto ni tiene mucha más historia. En el próximo tema como leer y escribir en archivos con datos primitivos (int, double, char...). 

Un saludo.

No hay comentarios:

Publicar un comentario