44. Los ficheros

Ahora, vamos a olvidarnos un poco del tema grafico y pasaremos a un tema importante como son los ficheros.

Normalmente, todas las aplicaciones que hemos creado hasta ahora, no hemos podido hacer un guardado de los datos que hemos creado. Por ejemplo, cuando creabamos un ArrayList para agregar nombres a esta lista, los nombres se guardaban y los podiamos recuperar mediante un algoritmo, pero cuando cerrabamos la aplicacion, esos datos que habiamos agregado a la lista, desaparecian.

Tanto por medio de ficheros como con bases de datos, podemos almacenar esos datos, y aunque cerremos la aplicacion, luego podemos volver a recuperarlos.

Nosotros trabajaremos ahora con ficheros. Pero, hay varios tipos de almacenar los datos en esos ficheros, ellos pueden ser ficheros de texto plano o ficheros binarios y tambien interfaces serializables para almacenar objetos en el disco.

En nuestro mini-curso, veremos solamente el de los ficheros de texto plano.

 

Bien, los ficheros que crearemos, o bien los podemos guardar en el mismo directorio del proyecto, en la carpeta "src", o bien le damos nosotros la direccion donde queramos guardarlos.

Para que se guarde en el directorio "src" de nuestro proyecto, simplemente escribiremos el nombre del fichero con su extension TXT, asi:

 

"miarchivo.txt"

 

De lo contrario, si queremos guardarlo en otra direccion, deberemos escribir toda la direccion y al final el nombre del fichero y su extension TXT, asi:

 

"c:\\Users\\RoqueCabillo\\Desktop\\miarchivo.txt"

 

Esto se guardaria en el Escritorio de Windows.

Y para poder trabajar con todos estos ficheros de texto, debemos importar la libreria que se encuentra en "java.io.*;".

 

Para que entiendas bien como funciona, utilizando sus metodos, debes saber tres pasos:

Primero, el fichero se tiene que crear y utilizaremos el metodo File():

File miarchivo = new File();

 

Segundo, el fichero se tiene que reescribir y utilizaremos el metodo FileWriter():

FileWriter fw = new FileWriter();

 

Tercero, los datos del fichero se pueden recuperar y utilizaremos los metodos FileReader() y BufferedReader():

FileReader fr = new FileReader(miarchivo);

BufferedReader bf = new BufferedReader(fr);

 

Utilizaremos, de lo visto anteriormente en otro tema, las excepciones, porque puede dar alguna excepcion al no existir algun fichero.

Tambien debemos saber que si abrimos el Stream (flujo de datos), cuando hagamos una operacion de escritura y lectura, luego debemos cerrar el Stream mediante el metodo "close()" para poder liberar memoria.

 

Para que lo veas todo mas claro, haremos un pequeño ejercicio y veras donde se crea tu archivo, como tal, este archivo lo puedes abrir perfectamente, en su interior veras en forma de texto, lo que vas agregando, esto nos sirve como almacenamiento de datos.

Vamos a crear una clase llamada "FicheroTextoPlano" y guardaremos el fichero en el mismo directorio "src", y quedara asi:

 

import java.io.*;

public class FicheroTextoPlano {
 
    private File fichero;
 
    public void crearFichero(){
        try{
            fichero = new File("miarchivo.txt");
        }catch(Exception ex){ex.printStackTrace();}
    }
 
    public void escribirFichero(){
        try{
            FileWriter fw = new FileWriter(fichero);
            fw.write("Aqui escribimos el texto que queramos");
            fw.close();
        }catch(Exception ex){ex.printStackTrace();}
    }
 
    public void leerFichero(){
        try{
            FileReader fr = new FileReader(fichero);
            BufferedReader bf = new BufferedReader(fr);
            String datos = null;
            while((datos = bf.readLine())!=null){
                System.out.println(datos);
            }
            fr.close();
            bf.close();
        }catch(Exception ex){ex.printStackTrace();}
    }
 
    public static void main(String[]args){
 
        TextoPlano tx = new TextoPlano();
        tx.crearFichero();
        tx.escribirFichero();
        tx.leerFichero();
 
    }
}
 
 
Debes saber que hacer esto:
 
FileReader fr = new FileReader(fichero);
BufferedReader bf = new BufferedReader(fr);

 

Es lo mismo que hacer esto otro:

 

BufferedReader bf = new BufferedReader(new FileReader(fichero));

 

Aunque yo aconsejo la primera forma.

Bien, si vas ahora a buscar el fichero que se ha creado con el nombre de "miarchivo.txt", normalmente en Netbeans suele crearse en Escritorio\MisDocumentos\Documentos\NetbeansProjects. Ahi veras el archivo de texto, abrelo, puede que se abra con el bloc de notas o Wordpad, y veras lo que se ha guardado dentro.

Aunque se haya guardado el texto, si volvieramos a introducir otro texto, este se sustituiria por el nuevo texto, y una forma para que no borre el texto anterior, si no que, agrege el nuevo texto al texto existente es agregando un "true" en los parametros del metodo "FileWriter()", de esta forma:

 

FileWriter fw = new FileWriter(fichero, true);

 

A continuacion, crearemos el mismo ejercicio, pero esta vez haremos que cree un fichero en el escritorio. ¿Te acuerdas como se hace?. Intentalo pues.

 

Contacto

ProgramandoJava cabillo@hotmail.es