Gravar num ficheiro txt sem apagar o q ele contem

Java

09/04/2009

O problema é que sempre que eu quero gravar Strings num ficheiro txt ele grava-as mas apaga o que o ficheiro contem, e eu o que quero é acrescentar. Tou a utilizar o seguinte código: public void GravaFicheiro (String lClientes,InetAddress ip){ String cliente=lClientes; InetAddress ipnet=ip; GregorianCalendar date=new GregorianCalendar(); File ficheiro = new File("ListaClientes.txt"); try { BufferedWriter bw = new BufferedWriter(new FileWriter(ficheiro)); if(ficheiro.canWrite()){ bw.write("-----------------------------------------------------------"+ "-----------------------------------------------------------"+ "-------------------------------"); bw.newLine(); bw.write("<Cliente>"+cliente+" <IP> "+ipnet+" </IP></Cliente><Date> "+ date.getTime()+" </Date>"); bw.flush(); bw.close(); } }catch (IOException e){} } Também experimentei este outro código, neste sei gravar sem apagar mas nao sei acrescentar linhas, ou seja dar um return (\n). public class Ler { static String linhas,p; static int c,t; public static void main(String[] args) { try{ File ficheiro = new File("ListaClientes.txt"); RandomAccessFile raf=new RandomAccessFile(ficheiro,"rw"); raf.seek(raf.length()); raf.writeChars("OOOOOOOOOOOOOOOIIIIIIIIII"); raf.writeChars("tuuuuuuuuuudddddddddddddooooooooo"); raf.close(); }catch (IOException e){} } } Obrigado pelo vosso intersse,
P_rodrigues

P_rodrigues

Curtidas 0

Respostas

Rafael Afonso

Rafael Afonso

09/04/2009

Paulo: Ao invés de fazer:
BufferedWriter bw = new BufferedWriter(new FileWriter(ficheiro)); 
Faça assim:
BufferedWriter bw = new BufferedWriter(new FileWriter(ficheiro, true)); 
O segundo argumento indica que o arquivo pode ser apendado. Para mais detalhes dê uma olhada no [url=http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileWriter.html]Javadoc de FileWriter[/url]. PS: Use as Tags CODE para colocar seu código. :!: Grato,
GOSTEI 0
Niflheim

Niflheim

09/04/2009

kra... eu não entendo disso... mas pelo que eu vi vc cria um novo arquivo chamado listaClientes a cada vez que vai cadastrar um novo... seria isso? oq acontece eh q qndo vc dah um new File("ListaClientes.txt") sendo que esse arquivo jah existe... ele vai ser obescrito, sendo substituido por um novo arquivo vazio... vc teria que abrir o arquivo pra poder continuar escrevendo e não criar um novo... soh q eu não sei qua eh a função q faz isso agora... :roll: em C seria fOpen();
GOSTEI 0
Niflheim

Niflheim

09/04/2009

[quote="rafael_afonso"]Paulo:
BufferedWriter bw = new BufferedWriter(new FileWriter(ficheiro, true)); 
ahhhh.... ehhhh.... se o segundo argumento for true ele começa a escrever os bytes no final do arquivo certo?!
GOSTEI 0
Rafael Afonso

Rafael Afonso

09/04/2009

[quote="Pure_Death_Metal"][quote="rafael_afonso"]Paulo:
BufferedWriter bw = new BufferedWriter(new FileWriter(ficheiro, true)); 
ahhhh.... ehhhh.... se o segundo argumento for true ele começa a escrever os bytes no final do arquivo certo?!
Exato. Eis o que está escrito no [url=http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileWriter.html#FileWriter(java.lang.String,%20boolean)]javadoc do construtor[/url]:
append - if true, then bytes will be written to the end of the file rather than the beginning
Grato,
GOSTEI 0
Rafael Afonso

Rafael Afonso

09/04/2009

É isso mesmo... :!: Obrigado pela resposta.
GOSTEI 0
Rafael Afonso

Rafael Afonso

09/04/2009

Excelente rafael_afonso. Eu estava com a mesma dúvida e apenas o ",true" me ajudou! Obrigado!
GOSTEI 0
POSTAR