Como faço para que cada vez que eu execute o método inserir ele adiciona no final do arquivo, nao substituindo o que estiver la?
importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.ObjectOutputStream;publicclassArquivos{privateObjectOutputStreamoutput;publicvoidinserir(){try{Filefilename=newFile("teste.dat");output=newObjectOutputStream(newFileOutputStream(filename));output.writeObject("Teste");output.flush();output.close();}catch(IOExceptione){// erro ao abrir}}publicstaticvoidmain(String[]args){newArquivos().inserir();}}
Consegui fazer ele gravar, agora n consigo ler o que foi gravado…
Metodo para gravar
try{Filefilename=newFile("teste.dat");raf=newRandomAccessFile(filename,"rw");raf.seek(filename.length());}catch(IOExceptione){JOptionPane.showMessageDialog(null,"Erro ao abrir o arquivo","Erro",JOptionPane.ERROR_MESSAGE);d.dispose();}try{raf.writeChars("Teste");}catch(IOExceptione){JOptionPane.showMessageDialog(null,"Erro ao escrever o nome no arquivo","Erro",JOptionPane.ERROR_MESSAGE);d.dispose();raf.close();}
No interior do arquivo esta ± assim:
[]T[]e[]s[]t[]e[]T[]e[]s[]t[]e[]2
O método que estou tentando fazer para ler
try{Filefilename=newFile("teste.dat");input=newObjectInputStream(newFileInputStream(filename));}catch(IOExceptione){System.out.println("Erro abrindo arquivo");}try{Filefilename=newFile("teste.dat");raf=newRandomAccessFile(filename,"r");// aqui nao sei o que fazer para ler}catch(FileNotFoundExceptione){return;}catch(IOExceptione){System.out.println("Erro abrindo arquivo");}
BrunoBastosPJ
Use a classe FileOutputStream para gravar o arquivo. Você deve usar o construtor new FileOutputStream(“teste.txt”, true) no caso o true é para adicionar os dados ao final do arquivo e não substituí-lo.