Problemas com registo e leitura de Dados em ficheiro binário

Olá a todos
283a16da79f3aa23fe1025c96295f04f.gif

Tenho uma superclasse ADT constituida por várias classes (Msh, piv, pac, evn). Cada novo paciente implica que seja preenchida a superclasse ADT, ou seja cada paciente tem os seus proprios dados e consequentemente um ADT diferente. contudo quero guardar todos os ADTs num ficheiro binário. O problema é que adicionando um novo paciente o registo ADT do paciente anterior é eliminado. Além disso como tentei colocar os dados ADT do paciente num vector, quando quero lelos ele dá uma erro que é:"java.lang.ClassCastException: java.util.Vector cannot be cast to ADT"
para me melhor compreensão do meu codico, coloqueio em todo em anexos. aqui enconta-se a fração que axo necessário neste momento....

Alguem me pode ajudar?
69934afc394145350659cd7add244ca9.gif


Agradecia mesmo muito muito....
Muito obrigado pela atenção
283a16da79f3aa23fe1025c96295f04f.gif



Código:
public class accoes { 

(........) 

static void apresentardados(ADT a){ 
geral.limparEcra(); 
System.out.println("Dados do Paciente"); 
System.out.println(""); 
System.out.println("Numero do Paciente: "+a.PAC.id+""); 
System.out.println("Data da admissão: "+a.M.AR.dia+"/"+a.M.AR.mes+"/"+a.M.AR.ano+ "as" +a.M.AR.hora+":"+a.M.AR.min+""); 
System.out.println("Nome: " +a.PAC.nome+""); 
System.out.println("BI: "+a.PAC.bi+""); 
System.out.println("Sexo: "+a.PAC.sexo+""); 
System.out.println("Local de Nascimento: "+a.PAC.localNascimento+""); 
System.out.println("Data de Nascimento: "+a.PAC.nasc.dia+"/"+a.PAC.nasc.mes+"/"+a.PAC.nasc.ano+""); 
System.out.println("Morada" +a.PAC.moradaLugar+" " +a.PAC.moradaConcelho+" "+a.PAC.moradaDistrito+""); 
System.out.println("Codico Postal: " +a.PAC.codPostal+""); 
System.out.println("Contacto"); 
System.out.println("Telemovel: "+a.PAC.telemovel+" / Telefone: "+a.PAC.telefone+""); 
System.out.println("Estado Civil: " +a.PAC.estadoCivil+""); 
System.out.println("Codico do evento a realizar: " +a.E.codEvento+""); 
System.out.println("Data da consulta a realizar: " +a.E.EC.dia+"/"+a.E.EC.mes+"/"+a.E.EC.ano+" as "+a.E.EC.hora+"/"+a.E.EC.min+""); 
System.out.println("Medico da consulta: "+a.P.nomeMedico+" "+a.P.apelidoMedico+""); 
System.out.println("Localizacao"); 
System.out.println("Servico "+a.P.servico+" da unidade "+a.P.unidade+" com o quarto "+a.P.quarto+" e cama "+a.P.cama+""); 


} 

static void registarPaciente1() { 
String ficheiro="HL8.dat"; 
int id=6; 
ADT a = leDadosPaciente(id); 
a.PAC.id=id; 

Vector<ADT> pacientes = new Vector<ADT>(); 
try { 
pacientes.add(a); 
FileOutputStream fos =new FileOutputStream(ficheiro); 
ObjectOutputStream oos = new ObjectOutputStream(fos); 
oos.writeObject(pacientes); 
oos.close(); 
} 
catch (Exception e) { 
e.printStackTrace(); 
} 
geral.limparEcra(); 
} 


static ADT leDadosPaciente(int id){ 

MSH msh = MSH.preencheMSH(); 
Paciente PAC = Paciente.preenchePaciente(id); 
EVN evento = EVN.preencheEvento(); 
PIV piv = PIV.preenchePIV(); 
ADT a = new ADT(msh, evento, PAC, piv); 
return a; 
} 

static void listarPaciente() { 
ADT a; 
String ficheiro="HL8.dat"; 
Vector<ADT> pacientes = new Vector<ADT>(); 
try { 
FileInputStream fis = new FileInputStream(ficheiro); 
ObjectInputStream ois = new ObjectInputStream(fis); 
ADT f = (ADT) ois.readObject(); 
while(f != null){ 
pacientes.addElement(f); 
f = (ADT) ois.readObject(); 
apresentardados(f); 
} 
ois.close(); 
} 
catch (Exception e) { e.printStackTrace(); 
} 
}
 
Penso que o q tu queiras é isto:
FileOutputStream fos = new FileOutputStream (<o file>, true)

O 2º parâmetro decide se queres fazer append ou não.
 
Olá
Quando faço o um novo append ao meu objecto que é a classe ADT, ele escreve numa nova linha do ficheiro binário?

Depois, quando quiser ler o objecto como vou posicionar no ficheiro binário para ler os vários objectos que tenho?

Obrigado pela atenção
 
Olá
Quando faço o um novo append ao meu objecto que é a classe ADT, ele escreve numa nova linha do ficheiro binário?

Depois, quando quiser ler o objecto como vou posicionar no ficheiro binário para ler os vários objectos que tenho?

Obrigado pela atenção

Podes carregar todo o ficheiro por exemplo, e dps usares apenas aquilo que queres.
Deixo-te uma sugestão:
pq não gravar um arraylist de objectos em vez de objecto a objecto?
 
Back
Topo