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!!!
É 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<Medico> geraMedico(String fileName) {
try {
ObjectInputStream medic = new ObjectInputStream(new FileInputStream(fileName));
List<Medico> medicos = new ArrayList<Medico>(); //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");
epassagem, também tenho dificuldade manipular arquivo, tem como vc postar seu codigo para estudo
Alguém sabe alguma maneira de ler os objetos serializados sem ter que colocar num ArrayList ou Vector, gostaria de percorrer o arquivo, todo.