Guardar un Area de Texto (JFileChooser)

    Anteriormente, en este blog he explicado como crear un archivo de texto desde la consola de Java (pantalla estilo DOS) con distintas extensiones. También he explicado como crear un área de texto y aplicarla a un Frame con menú desplegable.

    Ahora explicare como guardar lo que estamos escribiendo en una área de texto, indiferentemente si es un campo (TextField) o un área mas grande (como un TextArea), para ello utilizaremos el constructor "JFileChooser", el cual pertenece a la libreria "swing".

    Recordando que Java es un lenguaje muy sencillo y que para programar solo hay que aplicar la lógica y saber algo de ingles, esto no sera muy difícil de agregar a cualquier parte de nuestro código.

    Para comenzar dejo el link de las líneas de código que implementan la opción de "guardado" en un Frame utilizando un área de texto (TextArea).

void Guardar () //Guardar el TextArea
{
try
{
String nombre = "";
JFileChooser MI_ARCHIVO=new JFileChooser(System.getProperty("user.dir"));
MI_ARCHIVO.showSaveDialog(this);
File GUARDAR =MI_ARCHIVO.getSelectedFile();
if(GUARDAR != null)
{
nombre=MI_ARCHIVO.getSelectedFile().getName();
FileWriter GUARDADO=new FileWriter(GUARDAR);
GUARDADO.write(VARIABLE_DEL_TEXT_AREA.getText());
GUARDADO.close();
}
}
catch(IOException exp)
{
System.out.println(exp);
}
}

    Como siempre, dare una explicación de cada línea que se encuentra en el ejemplo. Como podemos ver en el ejemplo, estamos utilizando un "try" y un "catch", siempre es bueno colocarlos en este tipo de métodos. Explicare lo que hay en el código línea por línea para quedar claros en esto del "JFileChooser", si interpretamos y traducimos JFileChooser significa "Selector de Archivos de Java".

- try {

    Esto ya lo he explicado varias veces, pero no esta demas recordarlo. Siempre recomiendo utilizar el "try and catch", por más simple que sea el programa.

- String nombre = ""

    Utilizamos una variable del tipo "String" la cual estara en blanco, para eso colocamos las dos comillas seguidas, para que la variable este vacia. Esta variable sera utilizada más adelante para guardar nuestro "TextArea".

- JFileChooser MI_ARCHIVO=new JFileChooser(System.getProperty("user.dir"))

    Crea una variable del tipo "JFileChooser" llamada "MI_ARCHIVO", la cual va a capturar las propiedades del sistema con "System.getProperty" y los directorios del usuario con "user.dir".

- MI_ARCHIVO.showSaveDialog(this)

    Muestra el cuadro de diálogo que trae por defecto la libreria de Java, aplicandola a la variable "MI_ARCHIVO", que fue anteriormente creada.

- File GUARDAR =MI_ARCHIVO.getSelectedFile()

    Crea una variable del tipo "File" (del tipo archivo) llamada "GUARDAR", y que esta va a ser igual al archivo selecto (getSelectedFile()), de la variable "MI_ARCHIVO". Esto devuelve el archivo que vamos a leer.

- if(GUARDAR != null)

    En caso de que la variable "GUARDAR" no sea nula se aplicara la condición, para ser mas claros esto funciona así,  si le damos a cancelar la variable "GUARDAR" sera nula (null) y no hara el guardado de archivo que se encuentra dentro del "if".

- nombre=MI_ARCHIVO.getSelectedFile().getName()

    En la variable del tipo "String" llamada "nombre" almacenaremos el nombre y el archivo selecto de la variable "MI_ARCHIVO". Para esto, obtendremos el nombre con "getName()" y el archivo seleccionado con "getSelectedFile()", las cuales aplican a la variable "MI_ARCHIVO".

- FileWriter GUARDADO=new FileWriter(GUARDAR)

    Creamos una variable del tipo "FileWriter" llamada "GUARDADO", la cual sera una instancia de la variable "GUARDAR".

-GUARDADO.write(VARIABLE_DEL_TEXT_AREA.getText())

    Escribimos todo lo que hay en nuestra área de texto dentro de la variable "GUARDADO", del tipo "FileWriter". Para ello, capturamos todo el texto que exista en el "TextArea" colocando el nombre de la variable de la misma seguido de ".getText()".

- GUARDADO.close()

    Cerramos la variable "GUARDADO" para que no quede abierta.

- catch(IOException exp)

    En caso de que se produzca una excepción del tipo entrada y salida (Input-Output, de ahi las siglas IO), la capturamos y almacenamos en la variable llamada "exp".

- System.out.println(exp)

    Obtenemos la captura de la excepción y la mostramos por pantalla, usando la pantalla que tiene forma de DOS para que el programa sea más agradable a la vista del usuario y no se alarme por cualquier error diminuto que se produzca.

    Bueno, este es el método para guardar lo que hemos escrito en un "TextArea", y es sencillo de implementar a un Frame, solo debemos colocar este método dentro de la clase y fuera del principal (método main), y luego lo llamamos al momento de seleccionar la opción desde el menú desplegable.

29 Comentarios

Escribir Comentario
Anónimo
AUTOR
8 de noviembre de 2008, 22:28 delete

Hola, mas que comentario tengo una duda,
quisiera que al momento de guardar, lo guarde con una extensión especifica ¿Como puedo hacerlo?

Responder
avatar
9 de noviembre de 2008, 4:18 delete

Bueno, en teoría tendrías que hacer esto:

FileWriter GUARDADO=new FileWriter(GUARDAR+".EXTENSION");

Si te fijas debe ir un '.'(punto) seguido del nombre de la extensión. De esta forma el archivo se guardara con una ext. específica.

Responder
avatar
Anónimo
AUTOR
2 de diciembre de 2008, 1:50 delete

Amigo, gracias por el articulo, esta super bien.
Tengo una duda, a lo mejor te paresca ridicula, mi duda es esta:

En donde pones, por ejemplo
JFileChooser MI_ARCHIVO=new JFileChooser.....
En la parte donde dice: MI_ARCHIVO, que va en ese lugar exactamente, en nombre de mi clase o que?

Tambien en: File GUARDAR =MI_ARCHIVO.getSe.....
Que va exactamente en GUARDAR.


Disculpa mi ignorancia, pero soy empezando a aprenderc sobre este tema.

Responder
avatar
2 de diciembre de 2008, 11:16 delete

Ninguna pregunta es ridicula por mas obvio que parezca. Si hay una duda uno debe preguntar ya que si no lo hace se quedara esa duda.

MI_ARCHIVO es el nombre que le pondremos a la variable del tipo JFileChooser y GUARDAR, al igual que JFileChooser, es el nombre que le estoy dando a la variable del tipo File.

Por ejemplo, a la variable JFileChooser la llamo "ABC" y a la de guardado "XYZ", entonces el codigo de guardar iria algo así:

File XYZ = ABC.getSelectedFile()

Responder
avatar
Anónimo
AUTOR
2 de diciembre de 2008, 23:26 delete

Hola, soy el de la pregunta ant...
ya puede hacer que funcionara, era para una tarea de la escuela.
Gracias, hasta luego
aaaa...interesante blog.

Responder
avatar
Anónimo
AUTOR
29 de septiembre de 2010, 14:51 delete

ahora para cargar el archivo guardado en un textarea?

Responder
avatar
_CarlitoX_
AUTOR
29 de septiembre de 2010, 15:26 delete

Pues eso lo he publicado en mi blog desde hace mucho tiempo (2 años), precisamente esta en la entrada "Abrir un Area de Texto"...

Enlace: http://carlitoxenlaweb.blogspot.com/2008/09/abrir-un-area-de-texto-jfilechooser.html

Nada cuesta utilizar el buscador en la esquina superior derecha... saludos

Responder
avatar
Anónimo
AUTOR
12 de julio de 2012, 13:42 delete

una pregunta... donde queda guardo lo escrito en el textarea ??? ej si dentro del textarea se escribe "juan" eso donde queda guardado ???

Responder
avatar
12 de julio de 2012, 13:45 delete

No entiendo bien tu pregunta, pero queda guardado en un archivo de texto plano, es un archivo de texto simple...

Responder
avatar
Anónimo
AUTOR
15 de agosto de 2012, 11:37 delete

ese codigo solo crea un archivo, no guarda lo digitado en jtextArea

Responder
avatar
15 de agosto de 2012, 11:44 delete

ese codigo solo crea un archivo, no guarda lo digitado en jtextArea, si algun pudiera ayudarme con eso es una clase que debo de hacer, y gracias de ante mano.

Responder
avatar
15 de agosto de 2012, 11:53 delete

Fijate bien en esta línea de código: GUARDADO.write(VARIABLE_DEL_TEXT_AREA.getText());

Entonces lo que tienes que hacer es simplemente colocar el nombre de la variable del TextArea en ese getText(), por ejemplo:

GUARDADO.write(jTextArea1.getText());

Responder
avatar
15 de agosto de 2012, 11:58 delete

muchas gracias tienes razón, ya me guarda, otra pregunta ya pera no preguntar mas, como hago que cuando escriba algo en el txtArea se quede en blanco despues de guardar lo el archivo.

Responder
avatar
15 de agosto de 2012, 12:02 delete

Si quieres hacer eso solo debes agregar al final el método setText() de la siguiente manera: MiTextArea.setText(""); Eso dejara el TextArea en blanco.

Responder
avatar
15 de agosto de 2012, 12:22 delete

algo tan simple, muchas gracias carlos,seguire viendo los otros temas de java cualquier duda pregunto.

Responder
avatar
Anónimo
AUTOR
23 de septiembre de 2012, 1:36 delete

una pregunta yo ya cree el archivo pero luego de escribir en ej jTextArea me guarde sin preguntar la direccion del archivo asi como solo guardar....

Responder
avatar
23 de septiembre de 2012, 21:56 delete

Postea tu comentario para ver en que estas fallando.... Lo mas probable es que sea la siguiente línea:

JFileChooser MI_ARCHIVO = new JFileChooser(System.getProperty("user.dir"));
MI_ARCHIVO.showSaveDialog(this);

Saludos!!!

Responder
avatar
Anónimo
AUTOR
14 de octubre de 2012, 5:08 delete

mira como hago para que en el momento que le doy guardar el nombre de mi archivo sea lo que esta en un jtexfield

Responder
avatar
15 de octubre de 2012, 9:58 delete

Esta entrada explica como hacer con "JFileChooser" de modo que se muestra un dialogo para guardar el archivo, para lo que quieres hacer visita esta entrada: http://carlitoxenlaweb.blogspot.com/2008/09/crear-un-archivo.html... Esto guarda el archivo sin usar el dialogo... Saludos!!!

Responder
avatar
Anónimo
AUTOR
5 de diciembre de 2012, 22:12 delete

hola, a mi me gustaría guardar en otro archivo el texto lo que tiene el archivo que seleccionamos con el JFileChooser como le puedo hacer o es eso lo que estas explicando aqui?
PD: soy ultra noob en java

Responder
avatar
5 de diciembre de 2012, 22:17 delete

Entonces lo que necesitas es abrir el archivo y agregar lo que esta escrito a las últimas líneas del mismo:

http://carlitoxenlaweb.blogspot.com/2008/09/abrir-un-archivo.html

Si lo que quieres es editar otro archivo utilizando este mismo método:

http://carlitoxenlaweb.blogspot.com/2008/09/abrir-un-area-de-texto-jfilechooser.html

Saludos!!

Responder
avatar
Anónimo
AUTOR
5 de diciembre de 2012, 22:30 delete

muchas gracias :)

Responder
avatar
Anónimo
AUTOR
6 de marzo de 2013, 9:25 delete

Hola, tengo una consulta, tengo una aplicación en swing, que cargo datos de una bd oracle en un jtable, junto a la cual creo un boton "exportar a excel", y me crea un archivo con nombre y extension predefinido, lo que me gustaria hacer es que al presionar el boton "exportar a excel" se desplegara un jfilechooser que me permitiera elegir la ruta donde guardar este archivo. De antemano muchas gracias. Saludos !!

Responder
avatar
6 de marzo de 2013, 11:26 delete

Bueno, vendría siendo prácticamente lo mismo, solo que varían ciertas cosas.... Aunque para ti lo más fácil sería (ya que tienes los datos en una BD) crear la rutina para que los pase de la BD al archivo de excel, o en su defecto, creas un archivo separado por comas o tabulaciones en texto plano temporal con los datos y creas una rutina que los pase a excel, luego borras dicho archivo y esto queda transparente al usuario.

El punto es que pasar de la tabla a excel no tiene sentido porque los datos ya están en la BD... Saludos!!

Responder
avatar
Omar Murcia
AUTOR
27 de agosto de 2013, 22:37 delete

Es normal que a la hora de guardar el showsavedialog se me muestre 2 veces?

Responder
avatar
29 de agosto de 2013, 8:59 delete

No, no debería, revisa el código que no se este ejecutando 2 veces en una excepción o algo así.... Saludos!!

Responder
avatar
Anónimo
AUTOR
29 de octubre de 2013, 1:06 delete

Muchisimas gracias, aún no pruebo tu código, estoy emulando un sitio de descargas, y para colocar los comentarios del usuario y q el administrador los vea necesitaba algo como este maravilloso blog tuyo. Ademas si me permites el comentario eres muy guapo. (:muchas gracias

Responder
avatar
5 de noviembre de 2015, 23:24 delete

Hola amigo
lo que pasa es que como hago para que lo que hay en el TextArea se guarde tal cual en al archivo, es decir, que queden identicos. es que cuando lo guado voy y miro mi archivo y solo escribe en una sola linea todo derecho
gracias

Responder
avatar
2 de marzo de 2016, 13:18 delete

Esto se debe a que realmente no hay saltos de línea en tu TextArea, por ejemplo... Toma cualquier editor de texto y quita la opción de ajuste de línea (o cambia el tamaño sin cerrar la ventana), verás como se ve una sola línea si el texto no consigue estos saltos.

Salto de línea: \n
Salto de carro: \r

Para windows es muy importante hacer este salto, entonces por cada salto de línea debes colocar \r\n. Lo mas recomendable es dejar que la misma JVM determine que utilizar:

System.getProperty("line.separator");

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 EmoticonEmoticon