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.
Recibe notificaciones por correo
31 Comentarios
Escribir ComentarioHola, mas que comentario tengo una duda,
Responderquisiera que al momento de guardar, lo guarde con una extensión especifica ¿Como puedo hacerlo?
Bueno, en teoría tendrías que hacer esto:
ResponderFileWriter 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.
Amigo, gracias por el articulo, esta super bien.
ResponderTengo 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.
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.
ResponderMI_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()
Hola, soy el de la pregunta ant...
Responderya puede hacer que funcionara, era para una tarea de la escuela.
Gracias, hasta luego
aaaa...interesante blog.
ahora para cargar el archivo guardado en un textarea?
ResponderPues eso lo he publicado en mi blog desde hace mucho tiempo (2 años), precisamente esta en la entrada "Abrir un Area de Texto"...
ResponderEnlace: http://carlitoxenlaweb.blogspot.com/2008/09/abrir-un-area-de-texto-jfilechooser.html
Nada cuesta utilizar el buscador en la esquina superior derecha... saludos
una pregunta... donde queda guardo lo escrito en el textarea ??? ej si dentro del textarea se escribe "juan" eso donde queda guardado ???
ResponderNo entiendo bien tu pregunta, pero queda guardado en un archivo de texto plano, es un archivo de texto simple...
Responderese codigo solo crea un archivo, no guarda lo digitado en jtextArea
Responderese 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.
ResponderFijate bien en esta línea de código: GUARDADO.write(VARIABLE_DEL_TEXT_AREA.getText());
ResponderEntonces lo que tienes que hacer es simplemente colocar el nombre de la variable del TextArea en ese getText(), por ejemplo:
GUARDADO.write(jTextArea1.getText());
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.
ResponderSi quieres hacer eso solo debes agregar al final el método setText() de la siguiente manera: MiTextArea.setText(""); Eso dejara el TextArea en blanco.
Responderalgo tan simple, muchas gracias carlos,seguire viendo los otros temas de java cualquier duda pregunto.
Responderuna 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....
ResponderPostea tu comentario para ver en que estas fallando.... Lo mas probable es que sea la siguiente línea:
ResponderJFileChooser MI_ARCHIVO = new JFileChooser(System.getProperty("user.dir"));
MI_ARCHIVO.showSaveDialog(this);
Saludos!!!
mira como hago para que en el momento que le doy guardar el nombre de mi archivo sea lo que esta en un jtexfield
ResponderEsta 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!!!
Responderhola, 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?
ResponderPD: soy ultra noob en java
Entonces lo que necesitas es abrir el archivo y agregar lo que esta escrito a las últimas líneas del mismo:
Responderhttp://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!!
muchas gracias :)
ResponderHola, 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 !!
ResponderBueno, 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.
ResponderEl punto es que pasar de la tabla a excel no tiene sentido porque los datos ya están en la BD... Saludos!!
Es normal que a la hora de guardar el showsavedialog se me muestre 2 veces?
ResponderNo, no debería, revisa el código que no se este ejecutando 2 veces en una excepción o algo así.... Saludos!!
ResponderMuchisimas 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
ResponderHola amigo
Responderlo 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
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.
ResponderSalto 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");
Disculpa amigo una pregunta como podria enviar el texto de mi textarea a otra pero en diferente clase :(
ResponderQue buscas exactamente, con getText ya estas capturando el texto, luego puedes enviarlo donde gustes
ResponderLamentablemente 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