Abrir un Area de Texto (JFileChooser)

    Como vimos en la entrada anterior, utilizamos el selector de archivos predeterminado de Java (JFileChooser) para poder guardar caracteres que escribiamos dentro de un área de texto (TextArea), todo esto dentro de un método.

    El proceso para abrir un archivo utilizando el "JFileChooser" es muy parecido al de guardar, pero tiene pequeñas líneas de código que se utilizan de otra manera. También se manejara el uso y captura de excepciones, siempre es bueno recordarlo porque a muchos les pasa que se les olvida colocarlo en el código y luego ocurren las "catástrofes".

    Podemos dejar el link del ejemplo anterior abierto en una ventana o pestaña y este en otra, o copiarlo en algún editor de texto o de una vez en el programa que utilizamos para compilar. Si hacemos esto es más fácil leer cada línea que voy explicando y compararla con la del ejemplo, para ver las diferencias que hay entre el de arbrir y guardar.

void abrir() {
  try {
   String nombre="";
   String TEXTO

   JFileChooser MI_ARCHIVO=new JFileChooser(System.getProperty("user.dir"));
   MI_ARCHIVO.showOpenDialog(this);
   File ABRIR=MI_ARCHIVO.getSelectedFile();

   if(ABRIR != null) {
    nombre=MI_ARCHIVO.getSelectedFile().getName();
    VARIABLE_DEL_TEXT_AREA.setText("");
    FileReader FICHERO=new FileReader(ABRIR);
    BufferedReader LEER=new BufferedReader(FICHERO);
    while((TEXTO=LEER.readLine()) != null) {
     VARIABLE_DEL_TEXT_AREA.append(TEXTO+ "\n"); //append Concatena la linea leida
    }
    LEER.close();
   }
  } catch(FileNotFoundException exp) {
    JOptionPane.showMessageDialog(null, "El archivo no existe o no se"+
    "encuentra en esta carpeta.","Error", JOptionPane.WARNING_MESSAGE);
  } catch(Exception exp) {
    System.out.println(exp);
  }
 }

    Al igual que en todas las entradas que publico, siempre doy la explicación de lo que significa cada cosa que hay en el código, pero como en la entrada de "Guardar un Area de Texto (JFileChooser)" ya hemos públicado gran parte del código que usaremos, solo explicare las nuevas líneas que debemos agregar y las cosas más importantes.

- String nombre="" / String TEXTO=""

    Son variables del tipo caracter, las cuales seran utilizadas por el método mas adelante.

- VARIABLE_DEL_TEXT_AREA.setText("")

    Esto setea o coloca en blanco el "TextArea". ".setText" hace que se escriba en el área de texto lo que hay entre comillas, y como lo que queremos es dejar en blanco el área de texto para que se escriba lo que hay en el archivo que vamos a abarir, dejamos las comillas en blanco.

- FileReader FICHERO=new FileReader(ABRIR)

    En el ejemplo de guardar, utilizamos una variable del tipo escritura que era "FileWriter", en este caso, usaremos una del tipo lectura que es "FileReader", se utiliza de la misma forma que "FileWriter".

- BufferedReader LEER=new BufferedReader(FICHERO)

    Creamos una variable llamada "LEER" del tipo lectura (BufferedReader), la cual sera una instancia de la variable "FICHERO".

- while((TEXTO=leer.readLine()) != null)

   En la variable "TEXTO" se almacenara lo que la variable "LEER" capture, esto se logra colocando esto: TEXTO=LEER.readLine(). Y mientras esto sea distinto de un valor nulo seguira con el resto del código.

- VARIABLE_DEL_TEXT_AREA.append(TEXTO+ "\n")

    ".append" conecta la línea leida anteriormente. Luego se escribira en el "TextArea" lo que se almaceno dentro de la variable "TEXTO", que es del tipo "String", y "\n" le indica al programa que comenzara a escribir a partir de la siguiente línea.

- catch(FileNotFoundException exp)

   En caso de que se produzca una excepción del tipo "FileNotFound", la capturamos y almacenamos en la variable "exp". Esta es una excepción muy peculiar, si analizamos e interpretamos, "FileNotFoundException" significa "Excepción: Archivo No Encontrado". Luego de esta excepción tenemos otra del tipo general.

    Aqui no estoy explicando todo el código, ya que la mayor parte de el fue explicada en la entrada anterior, también podemos notar que he cambiado el nombre de algunas de las variables, como por ejemplo la variable "File", en el ejemplo anterior es llamada "GUARDAR" pero en este es llamada "ABRIR", pero la forma en que se utilizan es la misma.

    También podemos notar que utilizamos dos "catch" y un solo "try", esto es lo explicaba en la entrada de excepciones, que lo ideal seria manejar cualquier excepción de un tipo específico para tener un código mas eficiente y evitar las excepciones generales, aunque siempre las uso en caso de que se me pase uno que otro error.

    Este método que he explicado de abrir, no aplica solo a áreas de texto, sino que aplica para cualquier tipo de archivo, por ejemplo, podemos abrir un archivo "mp3" desde el selector de archivos predeterminado de Java, solo que hay que saber como manejar dicho archivo, es decir, la parte de abrir es la misma, pero en vez de utilizar un "TextArea" utilizaria otro tipo de variable que pueda almacenar audio.



5 Comentarios

Escribir Comentario
Anónimo
AUTOR
13 de octubre de 2010, 16:11 delete

Gracias por el codigo me ha servido.

Pero me queda una duda en esta parte:

while((TEXTO=LEER.readLine()) != null)
{
VARIABLE_DEL_TEXT_AREA.append(TEXTO+ "n");
}

Como puedo hacer que se guarde en una variable String, es decir que pueda usar lo que he leido fuera del while.

Responder
avatar
13 de octubre de 2010, 16:42 delete

No entiendo bien pero si se trata de lo que esta fuera del while la variable "TEXTO" es un String, por lo que puedes leer sus líneas con "ReadLine" y almacenarlos en cualquier otra variable del tipo String...

Si te refieres a que tenias otra cosa en el TextArea y quieres guardarla antes de abrir otro archivo prueba con un "TextArea.selectAll()" y almacenalo en la variable temporal...

Cualquier otra pregunta no dudes en preguntar, saludos...

Responder
avatar
Anónimo
AUTOR
13 de octubre de 2010, 17:07 delete

Si disculpa, despues de enviar la pregunta vi que estaba mal planteada pero queria ver si la entendias.

Lo que pasa es que tengo una cadena de numeros que se encuentra en un txt y yo quiero poder trabajar en esa cadena (ordenar los numeros), pero no se que string usar.

Osea creo que si es como tu dijiste, lo que ya tengo en "Texto" despues de que ya salio del ciclo while pasarlo a otra cadena.

Disulpa pero no busco como explicarme mejor.

Responder
avatar
13 de octubre de 2010, 17:12 delete

Bueno, puedes hacer eso o puedes utilizar el método de la burbuja, fuera del while en vez de utilizar el "append" llamas al método de la burbuja y luego lo plasmas en el textarea desde el mismo método, si no lo consigues me avisas y para mañana te tengo una entrada sobre eso... suerte :)

Responder
avatar
14 de octubre de 2010, 12:15 delete

Te invito a ver la nueva entrada, espero pueda ayudarte :)

Responder
avatar

Lamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.

Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión