[ Foro de Java ]

reescribir fichero

01-Feb-2014 12:35
Invitado (scr)
7 Respuestas

Hola, tengo un problema que no consigo solventar...por mucho que busque por internet.
La cuestion es que necesito crear un archivo que vaya almacenando unas palabra que van saliendo a lo largo del programa ..


Durante el programa necesito ir accediendo a esas palabras, pero claro para que se termine de escribir el contenido debo cerrar el archivo con .close();
Y luego necesito seguir escribiendo pero al estar ya cerrado el archivo pues no puedo.
Si alguien tienes alguna idea? gracias.Saludos


01-Feb-2014 13:41
Nacho Cabanes (+30)

Casi cualquier lenguaje de programación te permitirá escribir en ficheros de texto de dos formas distintas: o bien creando un fichero (y destruyendo el anterior si existía) o bien añadiendo a un fichero existente.

En el caso de Java, se consigue añadiendo un segundo parámetro con valor "true" al constructor que inicializa el fichero, para indicar que sí quieres activar el modo "append" (añadir), algo como:

 
try {
    PrintWriter salida = new PrintWriter(
        new BufferedWriter(new FileWriter("fichero.txt", true)));
    salida.println("Nueva frase");
    salida.close();
} catch (IOException e) {
    //En caso de errores...
}
 



01-Feb-2014 14:19
Invitado (scr)

Correcto, hasta ahi lo tengo asi...el problema viene después de todo eso..
Ahora ponte que justo despues del codigo que escribiste..quieres volver a escribir algo en el fichero seguidamente debajo del anterior..
En teoria con otro "salida.println("lo que sea")" ya bastaria?
Es que lo tengo así pero en el archivo no se escribe nada...no se que estoy haciendo mal.

Esto también es correcto verdad?

BufferedWriter buffer1 = null;
buffer1=new BufferedWriter(new FileWriter("palabrasusadas.txt",true));

Gracias por responder.




01-Feb-2014 14:26
Invitado (scr)

Me acabo de dar cuenta que me he expresado fatal jaja
claro está que si utilizo el codigo arriba indicado....todos los "salida.println("lo k sea")" se añadiran al archivo hasta que éste se cierre con close().
Una vez ejecutado y terminado el programa...correcto..todas las plabras que se han ido metiendo estan ahi en el fichero..
Mi problema es el siguiente..
En medio del programa...es decir antes de hace el "close()" necesito ir mirando el contenido de ese fichero.
Y claro como todavia no se ha terminado el programa...ahí dentro todavia no hay nada..entonces como miro su contenido?

Espero explicarme..es dificil...jajaj


01-Feb-2014 16:47
Nacho Cabanes (+30)

En un fichero de texto, no podrás hacer lectura y escritura simultáneas. Por eso, tendrás que escribir (añadiendo), cerrar, volver a abrir para leer, cerrar, volver a abrir si quieres añadir, y así sucesivamente.


01-Feb-2014 16:54
Invitado (scr)

Muchas gracias! Pensé que habria otra forma más asequible...veré como lo hago porque igual de esa manera es demasiado codigo..
Gracias de nuevo!! saludos!!


01-Feb-2014 17:09
Nacho Cabanes (+30)

Una vez que sabes cómo resolver un problema, ya puedes automatizarlo para que su uso se tan sencillo como sea posible.

Por ejemplo, en tu caso, puedes crear una función "Anyadir(fichero, texto)" que se encargue de simplificar la tarea repetitiva en vez de tener que repetir el fragmento de código completo cada vez. Puedes hacer algo similar también para la lectura.


01-Feb-2014 17:35
Invitado (scr)

Muchas gracias! Pensé que habria otra forma más asequible...veré como lo hago porque igual de esa manera es demasiado codigo..
Gracias de nuevo!! saludos!!






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)