List e Arquivo serializado.... ajuda

4 respostas
E

Ae galera, to com um problema no meu projeto.
O que ele faz é o seguinte: Jogo cada objeto do arquivo serializado dentro de cada alocação de uma ArrayList.
Depois retorno a lista.

Mais não estou conseguindo fazer funcionar…
Vo coloca o Codigo aqui, e me ajudem por favor.
aqui é o metodo que insere do arquivo para a lista

public void geraMedico(List<Medico> medicos) { Medico medico; //Objeto da classe medico try { ObjectInputStream medic = new ObjectInputStream(new FileInputStream("Medico.bin")); medicos = new ArrayList<Medico>(); do { medico = (Medico) medic.readObject();//medico recebe um objeto do arquivo medicos.add(medico); } while (true); } catch (Exception e) { System.err.println("Num leu"); e.printStackTrace(); } }

Ai em outro metodo eu chamo chamo o geraMedico:

geraMedico(medicos)

Eu estou instanciando a Lista “medicos” no metodo que eu chamo a função. será q issu que esta errado??

Vlwz galera!!!

4 Respostas

E

opa galeraa!!

Ja consegui arruma!!

HauhaUhAuhAuaH

Vlwz!!!

ViniGodoy

É bom lembrar que o java só passa parâmetros por valor.

Por isso, quando você fez:
medicos = new ArrayList<Medico>();

Você estava, na verdade, alterando uma cópia da referência à lista de médicos. No método original, o valor dessa cópia continua inalterado. Isso significa que a nova lista não é atribuída a variável médico no código que chamou a função.

O correto mesmo seria você usar a lista que a pessoa passou no parâmetro, ao invés de criar uma. Ou retornar a lista criada pelo método, através de uma função. Eu geralmente prefiro a segunda opção:

public List&lt;Medico&gt; geraMedico(String fileName) { try { ObjectInputStream medic = new ObjectInputStream(new FileInputStream(fileName)); List&lt;Medico&gt; medicos = new ArrayList&lt;Medico&gt;(); //Criamos a lista aqui dentro do { Medico medico = (Medico) medic.readObject(); medicos.add(medico); } while (true); //Esse while tá esquisito. } catch (Exception e) { System.err.println("Num leu"); throw new RuntimeException(e); //Nada de ignorar exceções! } return medicos; //Retornamos a lista ao final }

Depois, no método original

List<Medico> medicos = geraMedicos("medicos.bin");
S

epassagem, também tenho dificuldade manipular arquivo, tem como vc postar seu codigo para estudo

Rogerio_JAVA

Alguém sabe alguma maneira de ler os objetos serializados sem ter que colocar num ArrayList ou Vector, gostaria de percorrer o arquivo, todo.

Criado 15 de novembro de 2007
Ultima resposta 28 de fev. de 2008
Respostas 4
Participantes 4