Dúvida em ObjectOutputStream

5 respostas
E

Olá pessoal,

Bom, não estou conseguindo gravar um ObjectOutputStream em um arquivo sequencial. Estou usando a seguinte instrução para criar o arquivo:

try {

objetoEscrita = new ObjectOutputStream( new FileOutputStream( caminhoArquivo ) ); // caminhoArquivo já contém o caminho do arquivo a ser criado.

…

}

catch ( IOException ioException ) {

…

}

E para gravar meu objeto as instruções a seguir:

try{
objetoEscrita.writeObject( conta );

}

catch (  ) {



}

Onde conta é um objeto do tipo Conta que implementa a interface Serializable.

Estas operações estão sendo feitas dentro de uma classe que herda de JInternalFrame.

Quando rodo o debug do Eclipse e ponho um breakpoint na linha em que é instanciado o ObjectOutputStream tenho a mensagem que a instrução ‘ObjectOutputStream( new FileOutputStream( caminhoArquivo ) )’ não é uma operação de JInternalFrame válida, porém não é disparada nenhuma exceção. Assim meu objetoEscrita fica nulo.

Espero alguma resposta… desde já agradecido!

Pablo

5 Respostas

J

Ainda não entendi porque usar a classe JInternalFrame :cry:. Existe uma forma bastante simples de resolver o seu problema. Pelo que entendi você quer carregar e descarregar objetos usando streams.

Em primeiro lugar esses objetos devem ser serializáveis. Por isso, você deve implementar a interface Serializable. Ela não tem nenhuma operação, mas vai pedir a você que implemente os métodos obrigatórios writeObject(ObjectOutPutStream out) e readObject(ObjectInputStream in). Neles você descreve como proceder para enviar ou receber os valores das propriedades do objeto através dos streams.

É bem fácil, se você quiser eu posso enviar o código de exemplo que eu tenho por e-mail. :wink:

E

Ok! Eu já havia implementado Serializable em minha classe… e os métodos writeObject( nomeDoObjeto ) e readObject( nomeDoObjeto ) não são necessáriamente obrigatórios para se ler objetos com ObjectInputStream nem para escrever objetos com ObjectOutputStream. Eu estou conseguindo escrever objetos em meu arquivo. O problema está na hora da leitura. Quando uso “conta = ( Conta ) objetoLeitura.readObject( )” meu objeto conta fica em um estado inconsistente. Assim quando vou ler meu arquivo tenho um EOFException. Mas acho que vou fazer meu programa com RandomAccessFile mesmo…
Valeu!

Pablo

J

Você quem sabe cara. Só toma cuidado porque você tem que ler as propriedades na mesma ordem em que gravou, senão vai dar erro mesmo :roll: ! E também não seria o próprio objeto “conta” que implementa a função de se ler, ou gravar?

E

Eu estou lendo sim… estou gravando objetos e lendo sequencialmente. Enquanto ao objeto Conta ler… Pode ser… como tb pode não ser. A classe ObjectInputStream possui o método readObject(nomeDoObjetoASerLido)… ae tanto faz eu usar este com uma referência para o arquivo a ser lido como implementar um no próprio objeto. :roll: Valeu!

Pablo

J

Beleza então :grin: . O que eu faco acho que você já sabe, eu sei que não tem erro! Posso ler objetos em qualquer formato, geralmente eu uso byte ou bytearray (o formato universal :cool: ). Espero ter ajudado e espero que também me ajude nas dúvidas que provavelmente vão surgir.

Abraco :slight_smile: !

Criado 27 de outubro de 2004
Ultima resposta 3 de nov. de 2004
Respostas 5
Participantes 2