Estou estudando a serializacao de objetos em Java e retirei o seguinte
fonte do tutorial de Java da sun :

        File file = new File("objetos.dat");
        if(!file.exists()){
                file.createNewFile();
        }
        FileOutputStream out = new FileOutputStream(file);
        ObjectOutputStream s = new ObjectOutputStream(out);
        s.writeObject(o);
        s.flush();
        s.close();
        out.close();

este fonte funciona bem, mas os objetos salvos sao sempre sobre-escritos, 
o arquivo sempre tem somente um objeto gravado.
Entao decidi substituiar algumas linhas e o codigo ficou assim :

        File file = new File("objetos.dat");
        if(!file.exists()){
                file.createNewFile();
        }
*       RandomAccessFile randomfile = new RandomAccessFile(file,"rw"); 
*       randomfile.seek(randomfile.length());
*       FileOutputStream out = new FileOutputStream(randomfile.getFD());
        ObjectOutputStream s = new ObjectOutputStream(out);
        s.writeObject(o);
        s.writeObject(o);
        s.flush();
        s.close();
        out.close();

agora quando vou salvar os objetos eu utilizei um arquivo de acesso
randomico e sempre posiciono no fim do arquivo e salvo os objetos no
final.
utilizo o seguinto fonte para ler:

        try {
                FileInputStream in = new FileInputStream("objetos.dat");
                ObjectInputStream s = new ObjectInputStream(in);
                objeto o;
                while(true){
                        try {
                                // classe objeto
                                o =  (objeto)s.readObject(); 
                        } catch (Exception exc){
                                System.out.println(exc);
                                break;
                        }
                        // imprime informacoe sobre o obj na tela
                        o.print();
                }
                s.close();
                in.close();
        } catch(Exception ex) {
                System.out.println(ex);
        }

Mas quando vou ler os objetos so consigo ler o primeiro objeto gravado  e
da o seguinte erro :

java.io.EOFException: Expecting code

Alguem sabe o que pode ser isto ou o que estou fazendo de errado ???

   +-----------------------------------------------------+
   | Ricardo Neisse                                      |     
   | Ciencia da Computacao - Universidade de Passo Fundo |
   | Fone : xxx-54-331-1251                              |
   | Home Page http://lci.upf.tche.br/~7691              |
   +-----------------------------------------------------+


    --------------------------- LISTA SOUJAVA ---------------------------
    http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
    [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
    ---------------------------------------------------------------------

Responder a