jump to navigation

Escribir en un fichero de texto con Java Febrero 6, 2008

Publicado por lineadecodigo en : Java , trackback

Si vamos a escribir en un fichero de texto, sería una buena práctica el validar si dicho fichero existe o no. También podríamos escribir sobre el fichero directamente. Ahora que esto lo haríamos si no nos importase mucho el contenido que este tuviese.

Para validar si existe un fichero podemos leer el ejemplo Saber si existe un fichero con Java. Dicho artículo nos explica de forma detallada lo simple que esto resulta.

Resumiendo, bastará utilizar el método exists() de la clase File.

  1. String sFichero = "fichero.txt";
  2. File fichero = new File(sFichero);
  3.  
  4. if (fichero.exists()) {...}

En el caso de que no exista el fichero, nos pondremos manos a la obra para escribir sobre el fichero.

Lo primero que tendremos que hacer será crear un BufferedWriter. Esta clase nos ayuda a manejar los stream en forma de buffer con métodos muy sencillos. Este buffer necesitará saber cual es el fichero. Esto se lo proporcionamos desde la clase FileWriter.

Recuerda que la filosofía de acceso a la lectura y escritura a los ficheros, siempre es la misma. Buffer, que envuelve a Reader, que a su vez envuelve al fichero (o stream).

El código nos quedaría algo así:

  1. BufferedWriter bw = new BufferedWriter(new FileWriter(sFichero));

Para escribir texto nos apoyamos en el método .write() del buffer. Muy sencillo. La verdad es que no se me ocurría que texto grabar sobre el fichero, a si que, al final, vamos a volcar 10 líneas iguales ayudándonos de un bucle for.

  1. for (int x=0;x<10;x++)
  2. bw.write("Fila numero " + x + "\n");

No nos podemos olvidar de dos últimas cosas. Siempre que manejemos el fichero para escribir deberemos de cerrarle con el método .close().

Y lo otro, que toda la operativa de la clase java.io.* nos avisará de sus problemas de acceso a fichero, elevándonos una excepción IOException. Que habrá que capturar en alguna parte de nuestro código.

Visualizar el ejemplo | Descargar el código

| Print This Post/Page | 9990 visitas

 Votes | Average: 0 out of 5 Votes | Average: 0 out of 5 Votes | Average: 0 out of 5 Votes | Average: 0 out of 5 Votes | Average: 0 out of 5 (Todavia sin evaluar)
Loading ... Loading ...

Comentarios»

1. will - Mayo 23, 2008

Hola yo solo quiero que el fichero que he creado se actualize, pero cada vez que creo un fichero con java su contenido se agrega al final del ya existente, no se como puedo solucionar esto gracias

2. Doctor Lecter - Mayo 28, 2008

Prueba con: BufferedWriter bw = new BufferedWriter(new FileWriter(sFichero,false));

3. ryck - Junio 23, 2008

buenas,busco una forma de escribir en un archivo por lineas pro lo unico q hace es reemplazarme lo q ya tenia escrito….:(

4. argenis - Julio 9, 2008

no entiendo nada

5. francisco - Julio 14, 2008

este codigo me actualiza lo que tengo
quiero que siga escribiendo cada vez que le mando o llamo a la funcion.
probe con FileWriter(sFichero,false) y no pasa nada :(

6. Gatto - Julio 28, 2008

prueba FileWriter(sFichero,true)

7. francisco - Julio 28, 2008

perfecto!
cree un log para mi servlet y ese parametro me concatena en el .txt todos lo que pasa por el servlet
muchas gracias!

8. fede - Septiembre 27, 2008

Esta muy bueno pero tengo una super duda, yo tengo el siguiente codigo:
File f=new File(”/home/sefsinalas/Desktop/mi_archivo.txt”);
FileWriter fw= new FileWriter(f,false);
fw.write(”texto”);
fw.close();

ya lo he probado y funciona, pero porque anda si no tiene bufferedwriter? Por favor expliquenme eso? para que sirve el buffered?

9. Jose - Octubre 2, 2008

Pon atencion!
ya tengo creado el archivo pero necesito que me agregue
ain borrar lo que ya tengo echo ¿como hago?

10. Berna - Octubre 20, 2008

Hola fede, en relación a tu pregunta de por que no te funciona cuando usas el buffered, es por que al usar grupos de memoria, tienes que decirle a la JVM que has acabado para forzar la escritura en disco. Eso se consigue añadiendo al final de la linea un CR + LF
(retorno de carro y añadir línea).
En otras palabras sí que te está funcionando pero la JVM no está entregando el valor. Cuando no usas el buffered la escritura en disco es directa, por lo que aparentemente es más rápida, pero para no sobrecargar el acceso a disco cuando son ficheros grandes lo mejor es que te apoyes en el buffer.

Saludos,
Berna

11. Berna - Octubre 20, 2008

Por cierto, siendo más específicos, según tu ejemplo sería así:
fw.write(”texto”+ “\n”);

;-) Ciaooo

12. Feanor - Noviembre 2, 2008

Gracias che. Hace dias que no sabia como hacer para escribir en un fichero. El metodo estaba bien, pero, como bien aclaraste, habia olvidado cerrar el fichero al terminar de escribir en el.

13. edgar - Noviembre 6, 2008

un programa que sea una biblioteca y que funcione por medio de ficheros en java


Close
E-mail It