viernes, 22 de noviembre de 2013

Ejemplo JFileChooser

Nuevamente regreso con un ejemplo práctico sobre uno de los componentes Java Swing.............. el día de hoy les traigo el JFileChooser, este se encuentra en la categoría de componentes Complejos, ya que igual que el JColorChooser presenta una ventana con funciones ya definidas y lógica preestablecida....

A diferencia del anterior, aunque ambos nos permiten manipular ventanas definidas, el JFileChooser encierra un poquito mas de complejidad, pues en este caso trabajamos con archivos (no se requiere mucho conocimiento sobre archivos ya que el ejemplo es muy diciente, sin embargo mas adelante dedicaremos un espacio a el manejo de Archivos con Java...).

Que Es?

La Clase JFileChooser, nos presenta una ventana de herramientas, que dependiendo de nuestra lógica, nos permitirá Abrir o Guardar archivos, igual que la JColorChooser, la ventana es una ventana de Dialogo para navegar por nuestros directorios...

El Ejemplo.

Este es otro de esos ejemplos básicos y fáciles de entender, en si el componente que estamos trabajando habla por si solo...... usaremos una ventana JFrame con un JTextArea y dos JButtons.


La aplicación nos permitirá Abrir o Guardar un archivo de texto dependiendo del botón que presionemos, veamos los métodos que nos permiten esté procedimiento (Se crea el objeto en cada método por motivos del ejemplo, pero lo ideal es que el objeto sea global para trabajar con el mismo...).

Abrir Archivos.

Si definimos Abrir, entonces se cargará la ventana con lo necesario para navegar por nuestros directorios y seleccionar el archivo que queremos abrir (el trabajo con tipos de archivos lo veremos en una próxima entrada)


La Clase JFileChooser nos permite cargar la ventana anterior usando su método showOpenDialog(this), cuando seleccionamos el archivo deseado, lo agregamos a un objeto de tipo File por medio del método getSelectedFile(), posteriormente recorremos el archivo y lo almacenamos en un String...
private String abrirArchivo() {
  String aux="";   
  texto="";
  try
  {
   /**llamamos el metodo que permite cargar la ventana*/
   JFileChooser file=new JFileChooser();
   file.showOpenDialog(this);
   /**abrimos el archivo seleccionado*/
   File abre=file.getSelectedFile();

   /**recorremos el archivo, lo leemos para plasmarlo
   *en el area de texto*/
   if(abre!=null)
   {     
      FileReader archivos=new FileReader(abre);
      BufferedReader lee=new BufferedReader(archivos);
      while((aux=lee.readLine())!=null)
      {
         texto+= aux+ "\n";
      }
         lee.close();
    }    
   }
   catch(IOException ex)
   {
     JOptionPane.showMessageDialog(null,ex+"" +
           "\nNo se ha encontrado el archivo",
                 "ADVERTENCIA!!!",JOptionPane.WARNING_MESSAGE);
    }
  return texto;//El texto se almacena en el JTextArea
}

Por ultimo retornamos la cadena con el contenido de nuestro archivo y luego se almacena en el área de texto usando su propiedad setText(texto), en caso de cualquier excepción, usamos los bloques try - catch para manejarlo....

Guardar Archivo.

Si definimos Guardar, igual que el anterior, se cargará una ventana para navegar por nuestros directorios y definir la ruta donde será almacenado.


De la misma forma, la lógica para navegar por nuestro PC biene definida gracias al metodo showSaveDialog(this) de la clase JFileChooser, que nos permite cargar la ventana de dialogo y encontrar la ruta donde almacenaremos el archivo..... 
private void guardarArchivo() {
 try
 {
  String nombre="";
  JFileChooser file=new JFileChooser();
  file.showSaveDialog(this);
  File guarda =file.getSelectedFile();

  if(guarda !=null)
  {
   /*guardamos el archivo y le damos el formato directamente,
    * si queremos que se guarde en formato doc lo definimos como .doc*/
    FileWriter  save=new FileWriter(guarda+".txt");
    save.write(areaDeTexto.getText());
    save.close();
    JOptionPane.showMessageDialog(null,
         "El archivo se a guardado Exitosamente",
             "Información",JOptionPane.INFORMATION_MESSAGE);
    }
 }
  catch(IOException ex)
  {
   JOptionPane.showMessageDialog(null,
        "Su archivo no se ha guardado",
           "Advertencia",JOptionPane.WARNING_MESSAGE);
  }
 }
}

Internamente le definimos la extensión que vamos a manejar y tan solo es cuestión de dar un nombre y listo, el sistema guarda el contenido del área de texto en un objeto de tipo FileWriter  y posteriormente  el archivo en la ruta especificada....

Y Listo!!!!
Llegamos al final del ejemplo y al final de esta entrada, vemos que los métodos anteriores engloban todo lo necesario para utilizar la clase JFileChooser, y aunque no sepamos de archivos, es una muy buena oportunidad para aprender...



Descarga!!!

Les dejo el enlace de descarga por si lo quieren revisar ;)......si usas NetBeans te interesará esta entrada con un vídeo paso a paso de como abrirlo en el... recuerden que es gratis, y nada cuesta opinar, compartir o agradecer :)


También te podría Interesar.


¿Hay algo que quieras anexar o comentar sobre esta entrada?  no dudes en hacerlo.....y si te gustó...... te invito a compartir y
 Suscribirte ingresando al botón "Participar en este sitio" para darte cuenta de mas entradas como esta ;)

59 comentarios:

  1. Excelente ejemplo, me gustaria hacerlo, pero usando el IDE Netbeans... Saludos y gracias.

    ResponderEliminar
    Respuestas
    1. Gracias por comentar y claro, el lenguaje es el importante, en cualquier IDE podria hacerse, un saludo y gracias nuevamente ;)

      Eliminar
  2. Gracias, excelente ejemplo y explicado de forma clara y sencilla.

    ResponderEliminar
    Respuestas
    1. Hola, muchas gracias, me alegra que entendieras

      Eliminar
  3. Me ayudo para un proyecto de sistemas operativos (Y)

    ResponderEliminar
    Respuestas
    1. Hola, Me alegra mucho que te sirviera, gracias por comentar ;)

      Eliminar
    2. Gracias amigo es genial tu aporte, voy a estar al penddiente de tu blog, tienes material muy util.

      Eliminar
  4. Muy buen ejemplo de la Clase, muchas gracias.

    ResponderEliminar
  5. excelente ejemplo..pero como le puedo hacer para filtar archivos,, es decir si quiero que solo sea vean .pdf,, etc

    ResponderEliminar
    Respuestas
    1. pues tendrías q revisar: String nombre = f.getName(); y buscar por cadenas(substring pdf), lo que necesites, actualmente solo muestra contenido de archivos de texto, si requieres verlo como visor de pdf y otro tipo de archivo seria otro proceso pero similar.

      Eliminar
    2. tarde pero seguro...

      JFileChooser chooser = new JFileChooser();
      FileNameExtensionFilter filter = new FileNameExtensionFilter(".sql","sql");
      chooser.setFileFilter(filter);

      en este caso se filtra para que aparezcan archivos .sql

      Eliminar
    3. Pa' que quiere saber eso?, jaja saludos!

      Eliminar
  6. Excelente... Gracias por el aporte!!!

    ResponderEliminar
  7. Hola muchas gracias, muy explicito. Me sirvió :)

    ResponderEliminar
  8. Todo esta muy claro y bien explicado, muchas gracias!!

    ResponderEliminar
  9. como puedo poner un mensaje el cual m diga que no puedo selecionar otro tipo de archivo que no sea archivos pdf ..!

    pliz ..!!!

    ResponderEliminar
    Respuestas
    1. Con tu teclado!, saludos

      Eliminar
    2. Con un FileFilter, te dejo un ejemplo:

      FileNameExtensionFilter PDFFilter = new FileNameExtensionFilter("*.pdf", "pdf");

      FileChooser.setFileFilter(PDFFilter);

      Eliminar
  10. excelente, fue COPY & PASTE !

    ResponderEliminar
  11. hola como puedo hacer para que se guarde exactamente como se escribio, con espacio y saltos de linea, gracias

    ResponderEliminar
  12. Quiero guardar un archivo con un nombre con numero consecutivo o autoincremento, ejemplo; "archivo0001.doc" "archivo0002.doc" etc.

    ResponderEliminar
  13. no entendi nada
    me sale error en esa mon....

    ResponderEliminar
    Respuestas
    1. Entonces pa que pregunta?!Saludos desde marte

      Eliminar
  14. Hola excelente aporte una pregunta como puedo saber la extensión de un archivo seleccionado desde un jfilechooser saludos

    ResponderEliminar
  15. Muchas gracias amigo, ya he entendido como usar mejor este método.
    Buen explicació!
    :)

    ResponderEliminar
  16. gracias muy claro el ejemplo me sirvió para aclarar mis dudas

    ResponderEliminar
  17. Hola, quisiera saber como hago para cargar un archivo pdf de mi pc y luego este mismo enviarlo por javamail

    ResponderEliminar
  18. Muy interesante aporte. No entendía como hacerlo hasta hoy. Gracias

    ResponderEliminar
  19. Excelente ejemplo, pero una pregunta: como puedo hacer para que me aparezcan distintas opciones de guardado en la casilla "Archivos de tipo:"?

    ResponderEliminar
  20. hola te hago una pregunta yo estoy estudiando con eclipae y en el ejemplo no esta el codigo main?

    ResponderEliminar
    Respuestas
    1. Hola, puedes bajar el proyecto desde el enlace de descarga

      Eliminar
  21. muy buena explicación, gran aporte, pero tengo una duda, como le hago para activar la función "guardar como..."?.
    Existe alguna manera de hacerlo con jfilechooser???

    ResponderEliminar
  22. muchas gracias...........!!! muy buenos tutos........!!!

    ResponderEliminar
  23. Hola! Muy buen ejemplo! Lo único que los archivos me los lee codificados... Seguro que es una chorrada pero cómo soluciono esto? Saludos!

    ResponderEliminar
    Respuestas
    1. El ejemplo del principio es todo lo que necesitas.no se entiende a que te refieres mediante un menu.ahi ya depende de otros coponentes que quieras emplear, como botons,menu de opciones, etc.

      Eliminar
  24. Wow enserio que muchas gracias por su tiempo y por compartir sus conocimientos, estoy seguro que no soy el unico a quien han salvado.
    Gracias de nuevo y sigan asi!!

    ResponderEliminar
  25. Muchas gracias me fue muy util tu ayuda

    ResponderEliminar
  26. Hola he llegado a este lugar buscando una ayuda con respecto a este componente. El problema que tengo es que al poner cancelar en el filechoser también ejecuta el guardado,¿alguien tiene alguna idea de como lo controlaría?
    Saludos.

    ResponderEliminar
  27. hola buen día, sabes estoy haciendo un programa algo similar pero lo que deseo es cargar un pdf visualizarlo en la parte del formulario que deseo, guardarlo en un base de datos, pero no consigo hacer que me cargue y por consiguiente visualizarlo, por favor agradecería su ayuda ya que trabajo con la plataforma de netbeans, muchas gracias.

    ResponderEliminar
  28. Muchas gracias! Me ha servido de mucho!

    ResponderEliminar
  29. Hola Cristian, gracias por tu aporte, lo voy a usar para realizar un reproductor musical en java :D saludos

    ResponderEliminar
  30. me gustaria utilizar eso pero que copie y lo pegen en una carpeta donde yo le marco la ruta y le cambie el nombre

    ResponderEliminar
  31. Como puedo abrir un archivo de texto mediante un menu

    ResponderEliminar
  32. Como puedo abrir un archivo de texto mediante un menu ayudenme porfavor

    ResponderEliminar
  33. Como puedo abrir un archivo de texto mediante un menu

    ResponderEliminar
    Respuestas
    1. El ejemplo del principio es todo lo que necesitas.no se entiende a que te refieres mediante un menu.ahi ya depende de otros coponentes que quieras emplear, como botons,menu de opciones, etc.

      Eliminar
  34. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  35. Excelente andaba buscando como implementar una de estas ventanas en mi proyecto. Gracias!

    ResponderEliminar
  36. Amigos tengo una duda como puedo guardar un numero diferente de 1 de imagenes con JFileChooser y guardarlos en un arraylist

    ResponderEliminar
  37. Hola disculpa tengo una duda, después de importar un txt como puedo transformar en vector para poder hacer cálculos estadístico

    ResponderEliminar
  38. Hola yo estoy haciendo un programa de facturas y pues cuando mando a imprimir hice que se habriera un JFileChooser y guarde el archivo como .xlsx, todo funciona muy bien lo que pasa es que me pidieron que cuando se guarde tenga el numero del ticket ejemplo: dijamos que en el JFileChooser en el nombre de archivo aparezca: ticket 512346 tomando como parametro lo que se puso en un jtextfield de una ventana aparte del JFileChooser

    ResponderEliminar

Eres libre de realizar cualquier comentario, desde que pueda ayudar con gusto lo atenderé, y si es un critica, bienvenida sea!!!