[Resolvido] Gravar Arquivo Binário

2 respostas
R

E ae Pessoa beleza?! Tenho que criar um arquivo binário para guardar o estado de um vetor de registros, porém o arquivo é criado mais nada é gravado dentro dele. O que há de errado? Segue meu código abaixo:

Aqui está o Registro (Classe):

import java.io.Serializable;

public class Produto implements Serializable {
    public int codigo;
    public String nome;
    public int qtd;
    public double preco;    
}

Aqui eu crio o vetor de 100 posições:

Produto p[] =new Produto [100] ;

Aqui está o código para gravar o estado do registro (classe) em um arquivo binário:

public static void gravar (Produto[] p, int n){
        
        int i;
        
        File binaryFile = new File ("Produtos.dat");
        
        try{            
            FileOutputStream fos = new FileOutputStream(binaryFile);
            ObjectOutputStream oos = new ObjectOutputStream(fos);

            // escreve todos os produtos do registro no arquivo
            for (i=0;i<n;i++){                
               oos.writeObject (p[i]);           
            }

            // fecha o arquivo
            oos.close();
            fos.close();            
        }
        catch(IOException e)
        {
            System.err.println(e.getMessage());
        }
    }

E ai pessoal qual o problema do meu código? Sou novo em java.

2 Respostas

jweibe

Cara isso que você ta fazendo não tem nada de salvar o conteúdo em binário, o que você esta fazendo
e simplesmente salvando o estado do seu objeto através do processo de serialização.
Para efetivar a escrita do objeto falta um flush antes de você fechar o arquivo;

// fecha o arquivo  
oos.close();

faça assim…

// fecha o arquivo  
oos.flush();
oos.close();
R

Valew jweibe funcionou, agora sim está escrevendo corretamente. :smiley:

Criado 25 de janeiro de 2013
Ultima resposta 26 de jan. de 2013
Respostas 2
Participantes 2