Dúvida em Leitura de Objetos com ObjectOutputStream
6 respostas
adrianostanley
Infelizmente preciso ler os dados de uma aplicação a partir de um arquivo sendo que estou utilizando ObjectInputStream e ObjectOutputStream.
Como faço para que no momento da gravação, eu posicione o “ponteiro” no ultimo registro para que ele não substitua os registros já adicionados no arquivo?
E como é feita a leitura de todos os registros presentes no arquivo??
Visto que não encontrei um método que leia todos os objetos…
Uma solução é gravar uma ArrayList do objeto que voce quer no arquivo, e na hora de gravar um objeto, carregar a ArrayList, adicionar o objeto e gravar denovo.
Isso também ajudaria a carregar todos os objetos de uma vez.
Rafael_Nunes
Você tá criando o ObjectOutputStream utilizando um FileOutputStream para gravação?
Se sim, basta chamar o construtor de FileOutputStream que recebe um boolean no construtor:
FileOutputStream(Stringfile,booleanappend)
Passando o append como ‘true’, ele adicionara o que for escrito ao final do arquivo caso ele já exista.
Marky.Vasconcelos
A solução com o ArrayList ajudaria a carregar todos os objetos
adrianostanley
Gostei da idéia do ArrayList… faz sentido…
Mas isso:
(ArrayList<Annotation>)input.readObject();
Gera uma EOFException… imagino que seria um End of File Exception??
Marky.Vasconcelos
Na API
public class EOFException
extends IOException
Signals that an end of file or end of stream has been reached unexpectedly during input.
This exception is mainly used by data input streams to signal end of stream. Note that many other input operations return a special value on end of stream rather than throwing an exception.
Se voce for gravar a ArrayList é melhor não deixar o FileOutputStream escrevendo depois do que já tem no arquivo, no segundo parametro deixe false.
E talvez se você colocar o código fica mais fáçil ajudar.
adrianostanley
Tranquilo cara, funcionou aqui.
Muito obrigado,
Adriano