Acceso a datos I: Lectura y escritura de ficheros

[forTips] Java

Buenas, hoy vamos a ver una de las maneras mas faciles de tratar con datos, los ficheros de texto. Mas adelante veremos lectura y creación de objetos en ficheros, y acceso a base de datos, pero por ahora, nos centraremos en esto.

Para este tutorial necesitareis un entorno de trabajo capaz de compilar y ejecutar programas en Java. Yo recomiendo NetBeans 7, ya que aparte de Java, admite trabajar como entorno de trabajo con muchos otros lenguajes de programación. Pero recuerdo, podeis usar el que mas os guste o con el que mas cómodos os sintais.

Primero, para que queremos leer un fichero o escribirlo? Muy sencillo. Porque es la manera mas fácil de introducir datos en un programa, sin tener qu crear toda una UI para ello. Y ademas, si quisieramos añadir 1000 lineas de datos, si tubiera que hacerlo una persona, linea por linea, tardaria varias horas, mientras que si lo lee el programa directamente de un fichero, tardara poco mas que unos milisegunos.

Bien, aclarado esto, vamos a ver primero, como se escribe un fichero.

//String texto -> Texto que queremos escribir dentro del fichero
//String nombreFichero -> Ruta y nombre del fichero que vamos a crear
public static void escrituraFichero(String texto, String nombreFichero) {
        //Creamos variables de trabajo
        java.io.FileWriter fichero = null;
        java.io.PrintWriter pw = null;
        try {
            //Inicializamos las variables
            fichero = new java.io.FileWriter(nombreFichero);
            pw = new java.io.PrintWriter(fichero);
            //Escribimos el texto dentro del fichero
            pw.println(texto);
        } catch (Exception e) {
            System.out.println(e.getCause());
        } finally {
            try {
                if (null != fichero) {
                    //Cerramos el fichero
                    fichero.close();
                }
            } catch (Exception e2) {
                System.out.println(e2.getCause());
            }
        }
    }

Vamos a explicar un poco que ha pasado aqui.

public static void escrituraFichero(String texto, String nombreFichero) {
        java.io.FileWriter fichero = null;
        java.io.PrintWriter pw = null;

Aqui estamos creando una variable FileWriter, que es lo que nos permitirá crear el fichero físico, en el que podremos escribir.
La varibale PrintWriter será la que escriba por nosotros en el fichero. Es como el puente que se crea entre el programa y el fichero, por el que fluyen los datos que le vamos introduciendo.

 try {
     fichero = new java.io.FileWriter(nombreFichero);
     pw = new java.io.PrintWriter(fichero);
     pw.println(texto);

Al inicializar la variable FileWriter, le enviamos una String con el nombre y ruta del fichero que queremos crear (p.e; «C:tempprueba.txt«).
Para empezar a escribir, inicializamos el PrintWriter enviandole el FileWriter que hayamos creado, y luego ya podremos empezar a escribir lo que queramos. Al igual que con la funcion System.out.println(), tambien tenemos la función PrintWriter.print(), que hace lo mismo que PrintWriter.println(), pero si el salto de linia al final.

      } catch (Exception e) {
            System.out.println(e.getCause());
        } finally {
            try {
                if (null != fichero) {
                    //Cerramos el fichero
                    fichero.close();
                }
            } catch (Exception e2) {
                System.out.println(e2.getCause());
            }
        }
    }

La parte final del codigo, es para capturar las posibles Exception que puedan saltar durante el proceso. Lo explicaré mas detalladamente en otro tutorial. Lo que si voy a explicar, es que es importante acordarse de llamar a la funciona FileWriter.close(), ya que es la que se encarga de cerrar el «puente» entre el programa y el fichero.

Y hasta aqui el tutorial, espero que nuevamente no haya sido demasiado pesado, y fácil de entender. Y recordad, que cualquier comentario, de duda o crítica (siempre con educación) es bien recibido.