Ajuda: LinkedList Serializable

1 resposta
F

Não estou conseguindo salvar uma linkedlist objetos de objetos graficos num arquivo *.dat usando o serializable, se alguém puder me ajudar eu agradeço.

Aqui o código que usei:

try{
    FileOutputStream fos = new FileOutputStream("Objetos.dat");
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(objetos);
    oos.close();
} catch(IOException e){
    System.out.println(e.getMessage());
    e.printStackTrace();
}

1 Resposta

E

eae blz?

bom vindo ao Portal Java

bom quanto a serialização é o seguinte, uma collection java no seu caso um linkedlist é um objeto que possui referencias para objetos alocados na memoria, ou seja, quando vc declara um linkedlist e insere objetos vc naum insero os objetos dentro de um objeto linkedlist mas apenas armazena nesse linkedlist as referencias para as regioes de memoria onde estão efetivamente cada objeto pertencente a coleção linkedlist, ou seja, se vc mandar armazenar um objeto linkedlist ele apenas irá armazena informações relacionadas ao objeto no caso seria quantidade de elementos da linkedlist
e os objetos não serão armazenados pq são areas de memoria distintas apenas relacionadas ao linkedlist por referencias de regiaum de memoria

eu tive o mesmo problema utilizando o LDAP que é um sistema de diretorios, para arquivos, objetos, mandei armazenar um objeto do tipo linkedlist tambem e ele efetivamente armazenou o objeto e recuperou o mesmo objeto porem quando eu fui ver se tinha recuperado os objetos, a surpresa os objetos do linkedlist não foram salvos em disco…

depois de varios teste usando debug cheguei a conclusão do q descrevi acima e lembrando os conceitos de manipulação de listas e coleções onde vc apenas trata com referencias de regiões de memoria alocadas…

pra exemplificar vc tem 20 objetos pertencentes a um linkedlist sendo esse linkedlist um outro objeto, sabendo que esses 21 objetos estão alocados dinâmicamente em regiões distintas de memoria, quando vc manda realizar a saida para disco o linkedlist( o objeto ) ele irá armazenar/ salvar apenas o objeto linkedlist e não 21 objetos sendo o linkedlist e ou 20 objetos referenciados pelo objeto linkedlist

agora como eu resolvi a saida da coleção para disco, isso sendo valido para qq que implemente List

montei uma estrutura abstrata de coleção a ser representada no arquivo/disco, onde um é a informação de quantos objetos possui essa coleção, apos feito isso percorri a coleção usando um laço onde em cada posição eu realizo a saida do objeto para disco

sendo esses objetos armazenados utilizando uma nomenclatura no arquivo:

nomeDoObjeto:length :arrow: objeto que armazena a quantidade de objetos da coleção

nomeDoObjeto:[ ‘indice (usei o contador do laço)’ ] :arrow: armazena o objeto referente ao indice do objeto percorrido da coleção

com isso eu consegui enviar para um arquivo/disco a minha coleção

e para recuperar eu utilizo a nomenclatura recuperando primeito o objeto armazenado referente a quantidade de objetos salvos no arquivo/disco

feito essa recuperação eu chamo um laço que me faz um contador de 0 até < nomeDoObjeto:length, recuperando nomeDoObjeto:[ ‘indice (usei o contador do laço)’ ], remontando um novo linkedlist

bom foi essa solução que eu utilizei para fazer a saida para arquivo/disco e recuperação da coleção armazenada de uma coleção que implementa List :wink:

ps.: isto está sendo utilizado para aliviar sessão de aplicações J2EE onde tem-se a necessidade de um volume muito grande de informação para a sessão relacionado a dados que serão, ou estão sendo manipulados pela aplicação enquanto dura a sessão da conexão de um usuário no sistema

[]'s

Criado 30 de maio de 2005
Ultima resposta 30 de mai. de 2005
Respostas 1
Participantes 2