Día: 3 noviembre, 2015

Buffered

Trabajando con ficheros y flujos de texto

Cuando necesitamos trabajar con archivos de texto es necesario utilizar flujos (buffers) de texto. En este caso vamos a ver en qué consisten las clases BufferedReader y BufferedWriter, ambas disponibles en la librería java.io y que debemos agregar a nuestro proyecto. Tanto BufferedReader como BufferedWriter nos permiten trabajar con archivos de texto línea a línea, en lugar de ir caracter a caracter, lo que optimiza su funcionamiento.

ESCRIBIR texto EN un fichero:

En primer lugar debemos elegir el fichero desde el que queremos leer el texto, que será un objeto de tipo File. Si este fichero lo extraemos de un JFileChooser podemos obtenerlo mediante:

File fichero = this.jFileChooser.getSelectedFile();

Seguidamente extraemos el flujo del fichero mediante las instrucciones:

BufferedWriter flujo = new BufferedWriter(new FileWriter(fichero)); //Abrimos el flujo
flujo.write(this.jEditorPane.getText()); //Escribimos lo que haya en el jEditorPane
flujo.close(); //Cerramos el flujo
LEER texto DE un fichero:

En primer lugar debemos elegir el fichero en el que queremos escribir el texto, que será un objeto de tipo File. Si este fichero lo extraemos de un JFileChooser podemos obtenerlo mediante:

File fichero = this.jFileChooser.getSelectedFile();

Seguidamente extraemos el flujo del fichero mediante las instrucciones:

BufferedReader flujo = new BufferedReader(new FileReader(fichero)); //Abrimos el flujo
String texto; //Definimos una cadena de texto que utilizaremos para leer líneas del fichero
while((texto = flujo.readLine()) != null) { //Mientras haya líneas en el fichero
    this.jEditorPane.setText(this.jEditorPane1.getText() + texto + "\n"); //Añadimos al panel
}
flujo.close(); //Cerramos el flujo

¡Ten en cuenta que, en ambos casos, hay que capturar la excepción «FileNotFoundException»!

JFileChooser

JFileChooser: eligiendo ficheros de nuestro equipo

JFileChooser nos permite abrir un cuadro de diálogo donde el usuario puede elegir un fichero a través del explorador de archivos de su equipo. Lo habitual es asociar este JFileChooser a un evento de un botón o de un menú y abrirlo con el método showOpenDialog.

El resultado de este método es un entero que devolverá lo que el usuario haya elegido, pudiendo ser:

  • JFileChooser.CANCEL_OPTION: si el usuario pulsa Cancelar.
  • JFileChooser.APPROVE_OPTION: si el usuario elige un fichero y pulsa el botón Aceptar.
  • JFileChooser.ERROR_OPTION: si ocurre un error.

El fichero elegido por el usuario se puede obtener en la variable de tipo fichero jFileChooser.getSelectedFile();

Así, podemos obtener un pequeño ejemplo de cómo funcionaría este elemento:

JFileChooser fc = new JFileChooser(); //Creamos un nuevo objeto JFileChooser
int seleccion = fc.showOpenDialog(this.EditorPane1); //Abrimos el JFileChooser y guardamos el resultado en seleccion
if (seleccion == JFileChooser.APPROVE_OPTION){ //Si el usuario ha pulsado la opción Aceptar
    File fichero = fc.getSelectedFile(); //Guardamos en la variable fichero el archivo seleccionado
}