Arraylist em arquivo

5 respostas
L
Olá pessoal. Estou com problemas para salvar meu arraylist em um arquivo txt ou qualquer outro formato no hd. Tenho o seguinte codigo: Método gravar:
public void Gravar () {
        
        try {
        FileOutputStream arquivo = new FileOutputStream("arquivo.txt")  ;
        ObjectOutputStream out = new ObjectOutputStream(arquivo);
        out.writeObject(bean);
        JOptionPane.showMessageDialog(this, "Arquivo salvo com sucesso!");
        }
        catch (IOException e) {
            JOptionPane.showMessageDialog(this, "Erro ao gravar arquivo!");
        }
        
    }
Após pegar todos os dados dos campos e armazenar em um bean, eu chamo este método:
private void ButtonSalvarActionPerformed(java.awt.event.ActionEvent evt) {                                             
        // TODO add your handling code here:
        bean = new BeanLista();
        
        bean.setTarefa(AreaTarefa.getText());
        bean.setHorario(FieldHorario.getText());
        bean.setData(FieldData.getText());
        bean.setLocal(FieldLocal.getText());
        bean.setContato(FieldContato.getText());
        bean.setTelefone(FieldTelefone.getText());
        
        listaTarefas.add(bean);
        
        limparCampos();
        
        Gravar();
    }
Construtor que chama o Arraylist:
public Tarefas() {
        initComponents();
        listaTarefas = new ArrayList<BeanTarefas>();
    }

O problema é que na hora da gravaçao, ao invés de armazenar todos os registros, o programa sobrescreve o arquivo a cada novo registro.
Alguém poderia me ajudar?
Obrigado!!

5 Respostas

mauricioadl

passa true no construtor para ele adicionar no final do arquivo.

new FileOutputStream(“arquivo.txt”, true);

[]'s

L

Muito Obrigado Mauricio!!! Não acredito que era só isso… obrigado mesmo!

Estou com problemas agora em meu método ler… ele retorna a mensagem “invalid type code: AC” em IOException assim que chamo o método. depois disso consigo ler apenas o primeiro registro de minha Arraylist. Como será que resolvo isto?
Segue código de meu método Ler:

public void Ler () { try { //abre o arquivo FileInputStream arquivo = new FileInputStream("agenda.txt"); ObjectInputStream in = new ObjectInputStream(arquivo); while ((bean = (BeanAgenda)in.readObject()) != null); listacompromissos.add(bean); in.close(); } catch (FileNotFoundException fn) { JOptionPane.showMessageDialog(this, "Erro encontrar o arquivo!"); } catch(IOException ioe) { JOptionPane.showMessageDialog(this, ioe.getMessage()); } catch(ClassNotFoundException cnfe) { JOptionPane.showMessageDialog(this, "Erro ao abrir a classe!"); } }

Agradeço se puderem me ajudar mais uma vez!
Obrigado!

CyberX

public void Ler () { try { //abre o arquivo FileInputStream arquivo = new FileInputStream("agenda.txt"); ObjectInputStream in = new ObjectInputStream(arquivo); while ((bean = (BeanAgenda)in.readObject()) != null) { listacompromissos.add(bean); } in.close(); } catch (FileNotFoundException fn) { JOptionPane.showMessageDialog(this, "Erro encontrar o arquivo!"); } catch(IOException ioe) { JOptionPane.showMessageDialog(this, ioe.getMessage()); } catch(ClassNotFoundException cnfe) { JOptionPane.showMessageDialog(this, "Erro ao abrir a classe!"); } }

Seu while estava com ; no final.

L

Fala Cyber!
Infelizmente não é isso ;/
devo ter colocado o ponto e virgula sem querer ao regiditar esta linha…
nao funcionou mesmo… mas obrigado pela ajuda!
Alguém tem mais alguma sugestão?

L

Ninguém para me ajudar? :frowning:

Criado 24 de maio de 2012
Ultima resposta 26 de mai. de 2012
Respostas 5
Participantes 3