PessoALL, vejam se podem me ajudar por gentileza...
Tenho uma Lista de Contatos que salvo em um arquivo.
A PRIMEIRA vez que adiciono Contatos, o método de mostrar todos os contatos funciona perfeitamente. O problema acontece quando preciso RECUPERAR a Lista do arquivo e add novos Contatos no FINAL do arquivo.
Eu até consigo recuperar a Lista e escrever no final, porém preciso escrever no final da LISTA e não no final do ARQUIVO como está ocorrendo.
Do jeito que está, escreve-se diversas Listas no final do arquivo ao invés de Contatos no final da Lista.
Confuso né?
Vai parte do código p/ auxiliar o entendimento.
...
case 1:
ma.recuperaLista(); //aqui aparentemente eu até consigo recuperar a Lista, mas não funciona corretamente
do {
cont = new Contatos();
cont.setNome(JOptionPane.showInputDialog(null, "Nome: "));
cont.setTel(JOptionPane.showInputDialog(null, "Telefone: "));
listaContatos.add(cont);
again = JOptionPane.showConfirmDialog(null, "Inserir outro contato?", "CONFIRMAÇÃO", JOptionPane.YES_NO_OPTION);
} while (again == JOptionPane.YES_OPTION);
ma.salvaLista(listaContatos);
break;
public void salvaLista(List<Contatos> contato) throws IOException {
FileOutputStream salva = new FileOutputStream (ARQ, true);
ObjectOutputStream salvaObj = new ObjectOutputStream (salva);
salvaObj.writeObject(contato);
salvaObj.flush();
salvaObj.close();
}
public List<Contatos> recuperaLista() throws Exception {
FileInputStream recupera = new FileInputStream(ARQ);
ObjectInputStream recuperaObj = new ObjectInputStream(recupera);
List<Contatos> contato = (List<Contatos>) recuperaObj.readObject();
recuperaObj.close();
return contato;
}
public void varreContatos(List<Contatos> cont) {
for (int i=0; i<cont.size(); i++) {
cont.get(i).imprimeContato();
}
}
public void imprimeContato() {
System.out.println("Nome: " +nome + "\nTelefone: " +tel + "\n");
}
Se eu rodar o programa pela segunda vez, mesmo eu adicionando novos contatos, só é exibido os contatos adicionados na primeira vez (quando o arquivo foi criado).
Obrigado!