jueves, 16 de julio de 2009

Añadir texto a un archivo en Java



Vamos a ver un ejemplo de lo más simple en el manejo de archivos. Consistirá simplemente en añadir un texto a un archivo. Si el archivo no existe se creará.



Ejemplificando


Queremos añadir el texto "Hola" al archivo prueba.txt que está en la unidad C. El código sería el siguiente:


BufferedWriter out = null;   
try {   
    out = new BufferedWriter(new FileWriter("C:/prueba.txt", true));   
    out.write("Hola");   
} catch (IOException e) {   
    // error processing code   
} finally {   
    if (out != null) {   
        out.close();   
    }   
} 



Fuentes


http://viralpatel.net/blogs/2009/05/20-useful-java-code-snippets-for-java-developers.html




23 Comentarios:

giovanny dijo...

Disculpa y como puedo seguir aumentando texto al archivo sin perder el texto anterior, osea que se siga aumentando lo que ingreso gracias..

Felipe dijo...

Hola giovanny.

Éste método:

"FileWriter(String fileName, boolean append)"

lo estamos llamando con el parámetro append igual a true, por tanto cada vez que lo llamemos estaremos añadiendo texto al archivo, sin perder lo que teníamos.

Ejemplo:

out = new BufferedWriter(new FileWriter("D:/prueba.txt", true));
out.write("hola");

out = new BufferedWriter(new FileWriter("D:/prueba.txt", true));
out.write(" que");

out = new BufferedWriter(new FileWriter("D:/prueba.txt", true));
out.write(" tal");

Ésto dará como resultado el texto "Hola que tal", en el archivo D:/prueba.txt .

Saludos.

Anónimo dijo...

Hola un saludo...
¿Como puedo hacer que lo que ingrese en el archivo de texto se ingrese en otra linea y no en la misma?

....
out.write("primera linea del archivo");
....
out.write("segunda linea");

y no que aparezca "primera linea del archivo segunda linea"

gracias de antemano

Felipe dijo...

Hola.

Debes llamar al método newLine() . Ejemplo:

out.write("línea 1");
out.newLine();
out.write("línea 2");

De ese modo se introduce un salto de línea.

Saludos y espero que te sirva.

Jose Roberto Muñoz Alvarado dijo...

y como hacemos cuando queremos adicionar un enter en cada que insertamos un nueva linia sin usar el newline() dos veces

Felipe dijo...

Hola José roboerto.

Puedes crearte un método así:

void escribirLinea(String texto){
out.write(texto);
out.newLine();
}


De esta forma no tendrás que estar llamando newline constantemente, solamente tendrás que llamar a este método.

Saludos.

Henry Quishpe dijo...

hi...........como puedes agregar al inicio pero sin perder el texto ya existente!!!!!!!!!!!!!!!

Henry Quishpe dijo...

x ejemplo tengo escrito en el archivo....Hola como estas........y quiero escribir....xxx "\n" Hola como estas

Felipe dijo...

Hola Henry.

En el segundo comentario de este post explico como añadir texto a un archivo sin perder el texto existente.

Saludos.

Anónimo dijo...

excelentes explicaciones , y gracias por contestar.

Felipe dijo...

Muchas gracias a tí por comentar.

Saludos.

Anónimo dijo...

Luis E. L:

Hermano, y como hago si quiero sacar el resultado de un TextArea y guardarlo a un archivo de texto.. solo cliqueando un boton??

Felipe Martínez D. dijo...

Hola Luis.

Puedes ver un ejemplo de TextArea aquí: http://docs.oracle.com/javase/tutorial/uiswing/components/textarea.html
Una vez que obtengas el texto, puedes añadirlo a un archivo de la siguiente forma: http://felinfo.blogspot.com.es/2009/07/anadir-texto-un-archivo-en-java.html

Espero haberte ayudado. En caso de que tengas dudas, puedes preguntarme.

Saludos cordiales.

Juan Miguel Cabral Virgen dijo...
Este comentario ha sido eliminado por el autor.
Juan Cabral dijo...

Hola oye creo que la pregunta de Henry no es lo del 2 comentario.. no se si me podrías explicar como agregar a un archivo ya existente una cadena de texto pero al principio por ejemplo tienes que tu archivo contiene "Hola soy juan", y lo que quieres es agregar "jesus", como le harías para que quedara "jesus Hola soy juan"

Felipe Martínez D. dijo...

Hola Juan.

Si quieres añadir el texto al principio del archivo yo lo que haría sería lo siguiente:

1. Extraer el texto del archivo y guardarlo en un String.
2. Añadir la cadena deseada al principio del String.
3. Escribir el String resultante en el archivo, poniendo el parámetro append a false -> out = new BufferedWriter(new FileWriter("C:/prueba.txt", false));

Si tienes dudas, puedes preguntarme.

Saludos cordiales.

Anónimo dijo...

como escribo texto en determinada posición de la linea
por ejemplo:

hola a todos, quiero escribir algo diferente ---->linea original del archivo
hola a todos,soy Any y quiero escribir algo diferente -----> necesito hacer eso en mi archivo sin perder el resto del contenido

Felipe Martínez D. dijo...

Hola.

Yo creo que la mejor opción es que primero leas el texto del archivo mediante FileReader y BufferedReader (mira este ejemplo: http://www.mkyong.com/java/how-to-read-file-from-java-bufferedreader-example/ ) que guardará el texto en un String. Debes modificar ese String añadiendo el texto que desees y posteriormente vuelvas a escribir el texto ya modificado en el archivo (siguiendo el ejemplo de este post). Espero haberte ayudado.
Saludos.

Anónimo dijo...

Hola Felipe, primero gracias por el tutorial. Pero venia buscando lo mismo que te pregunta Henry.

Solo decirte una cosa, es una burrada leer un archivo completo para agregar algo al principio del archivo. Hay otra opcion que es lo que estoy buscando. Si doy con ella espero acordarme de esta pagina.

Anónimo dijo...

Buscando informacion creo que la clave la tenemos en la clase RandomAccessFile.

Felipe Martínez D. dijo...

Hola.

Según en qué casos, puede ser más rápido (eficiente) o más lento que BufferedReader. En general se recomienda usar acceso secuencial (como bufferedReader) siempre que sea posible. Aquí se habla de ello: http://stackoverflow.com/questions/10400688/bufferedreader-vs-randomaccessfile-in-java

Saludos.

Unknown dijo...

Muchas gracias acabas de salvar mis practicas!

Felipe Martínez D. dijo...

Me alegro!. Un saludo.

Publicar un comentario

Felinfo: Java, Linux, Virtualización. Open Source.  ©Template Blogger Green by Dicas Blogger .

TOPO