Como gravar objetos serializados em arquivos sem sobrescrever?

3 respostas
A

Olá pessoal, estou fazendo um programa que grava e lê Objetos serializados em arquivos, porém não consegui fazer com que ele grave sem sobrescrever o arquivo existente. Resumindo, quando o aplicativo grava, ele apaga tudo o que foi gravado antes.

3 Respostas

L

Qual tipo de Arquivo ?

Hoje eu trabalho com aplicações que escrevem arquivos .csv e .txt sem sobrescrever.

D

Temos alguns pontos aqui.
Primeiro que você deve estar abrindo o arquivo com o FileOutputStream, passando apenas um File (ou a String que representa o caminho do arquivo) como argumento.
O FileOutputStream possui métodos construtores sobrecarregados e uma das sobrecargas recebe um segundo argumento, um boolean que indica se o arquivo poderá ser ‘apendado’ ou não.
Se você usar o construtor sobrecarregado e passar o segundo argumento como true não terá este problema.
Segundo, como você vai ler vários objetos de um arquivo onde os mesmos foram serializados?

A

Obrigado pelas dicas, consegui resolver meu problema com o método de cadastro da seguinte forma (contando que A classe Cliente implementa Serializable)

public void cadastrar(Cliente cliente) throws Exception, ClassNotFoundException{        
        
        intput = new ObjectInputStream(new FileInputStream("clientes.piz")); 
        
        ArrayList<Cliente> arquivo;

        try{
            arquivo = (ArrayList<Cliente>) intput.readObject();
            intput.close();
            arquivo.add(cliente);
                output = new ObjectOutputStream(new FileOutputStream("clientes.piz"));
                output.writeObject(arquivo);  
            System.out.println(1);
            
        }catch(IOException e){
            arquivo = new ArrayList<Cliente>();
            arquivo.add(cliente);
            output.writeObject(arquivo);   
            System.out.println(2);
        
        }
            
        
            if(output != null)
            output.close();
           
            
        
    }
Criado 22 de maio de 2013
Ultima resposta 23 de mai. de 2013
Respostas 3
Participantes 3