Olá pessoal sou um novo membro do Guj e estudante do 3periodo do curso de sistemas de informação, e como materia de POO2 estamos tendo java, estamos fazendo um projetinho de cadastro de consultas com arquivos serializados, porem estou tendo problemas no metodo de leitura desse arquivo ai vai o código:
publicvoidleRegistros(){Consultarecord;System.out.printf("Nome","Fone");try{// insere os valores do arquivo record=(Consulta)saida.readObject();// exibe o conteúdo de registroSystem.out.printf(record.getNomePaciente());}catch(EOFExceptionendOfFileException){return;// fim do arquivo foi alcançado}catch(ClassNotFoundExceptionclassNotFoundException){System.err.println("Não foi possível criar o objeto.");}catch(IOExceptionioException){System.err.println("Erro durante a leitura.");}catch(Exceptionef){JOptionPane.showMessageDialog(null,"Erro: "+ef.getMessage());}}// fim do método readRecords
ele esta entrando no ultimo catch e exibindo como exception : Erro java.lang.Class alguem poderia me dar uma ajuda nisso abraço a todos!!
Seria alguma coisa como Class Cast Exception ???
defina melhor seu erro…
LPJava
poe o codigo completo ai!!
A
arturleitao
A unica coisa que a exception me retorna é isso java.lang.Class, ai vai o codigo completo:
RecordSerializable.javapackageconsultorio;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.ObjectOutput;importjava.io.Serializable;importjava.io.ObjectOutputStream;importjava.io.ObjectInputStream;importjava.io.FileOutputStream;importjava.io.FileInputStream;importjava.io.FileWriter;importjava.io.PrintWriter;importjava.io.IOException;importjava.io.EOFException;importjava.util.*;importjavax.swing.JOptionPane;publicclassRecordSerializableimplementsSerializable{privateObjectOutputStreamentrada;privateObjectInputStreamsaida;publicRecordSerializable(){}publicstaticvoidgeraInfoLog(FileLog){try{FileWritermeuLog=newFileWriter(Log,true);PrintWritersaida=newPrintWriter(meuLog,true);Datedata=newDate(Log.lastModified());saida.println("Tamanho do arquivo em bytes : "+Log.length());saida.println("Ultima modificação: "+data);saida.println(" ");saida.close();meuLog.close();}catch(Exceptione){JOptionPane.showMessageDialog(null,"Erro ao tentar criar/abrir arquivo de Log"+e.getMessage());}}publicstaticvoidarqLog(){FileLog=newFile("Log.txt");;if(!Log.exists()){JOptionPane.showMessageDialog(null,"Arquivo de Log não encontrado \n"+"Log será criado no diretorio da aplicação");}geraInfoLog(Log);}publicstaticbooleanverificaArquivoSer(){booleanretorno=false;try{Filearq=newFile("consultorio.ser");if(!arq.exists()){JOptionPane.showMessageDialog(null,"Arquivo não existe ele sera criado no diretorio da aplicação","Teste de arquivo",1);retorno=false;}}catch(Exceptione){JOptionPane.showMessageDialog(null,"Não foi possivel verificar:"+e.getMessage());}returnretorno;}publicObjectOutputStreamabreArquivoGravacao(){try{FileOutputStreamarq=newFileOutputStream("consultorio.ser");ObjectOutputStreamentrada=newObjectOutputStream(arq);}catch(IOExceptione){System.err.println("erro abertura de arquivo"+e.getMessage());}catch(Exceptioner){JOptionPane.showMessageDialog(null,er.getMessage());}returnentrada;}publicvoidadicionaRegistro(){try{entrada=newObjectOutputStream(newFileOutputStream("consultorio.ser"));entrada.writeObject(Consulta.class);entrada.close();JOptionPane.showMessageDialog(null,"registro salvo");}catch(IOExceptioner){JOptionPane.showMessageDialog(null,"Erro ao adicionar registro:"+er.getMessage());}}publicObjectInputStreamabreArquivoLeitura(){try{saida=newObjectInputStream(newFileInputStream("consultorio.ser"));JOptionPane.showMessageDialog(null,"aberto");}catch(IOExceptionex){JOptionPane.showMessageDialog(null,ex.getMessage());}returnsaida;}publicvoidcloseFile(){try// fecha o arquivo e encerra{if(saida!=null)saida.close();System.exit(0);}catch(IOExceptionioException){System.err.println("Error closing file.");System.exit(1);}}publicvoidleRegistros(){Consultarecord;System.out.printf("Nome","Fone");try{// insere os valores do arquivorecord=(Consulta)saida.readObject();// exibe o conteúdo de registroSystem.out.printf("%-10s%-12d\n",record.getNomePaciente());}catch(EOFExceptionendOfFileException){return;// fim do arquivo foi alcançado}catch(ClassNotFoundExceptionclassNotFoundException){System.err.println("Não foi possível criar o objeto.");}catch(IOExceptionioException){System.err.println("Erro durante a leitura.");}catch(Exceptionef){JOptionPane.showMessageDialog(null,"Erro: "+ef.getMessage());}}// fim do método readRecords}test.javapackageconsultorio;publicstaticvoidmain(Stringargs[]){RecordSerializable.arqLog();if(!RecordSerializable.verificaArquivoSer()){RecordSerializablecria=newRecordSerializable();cria.abreArquivoGravacao();}}}
T
thingol
Você não deve salvar o objeto “Consulta.class” (cujo tipo é java.lang.Class).
Você tem de salvar um objeto pertencente à classe Consulta.
Consultaconsulta=newConsulta();consulta.set_____(_____);// preencha os campos da consultaentrada.writeObject(consulta);
Não faça confusão com nomes de variáveis (pôr um ObjectOutputStream com o nome “entrada” e um ObjectInputStream com o nome “saída” me confundiu um pouco).
A
arturleitao
um entendi, fiz alteração passei como parametro no metodo adicionaRegistro(Consulta con) um objeto da classe consulta mas agora da erro ao gravar o arquivo a IOException retorna
consultorio.Consulta
publicvoidadicionaRegistro(Consultacon){try{entrada=newObjectOutputStream(newFileOutputStream("consultorio.ser"));entrada.writeObject(con);entrada.close();JOptionPane.showMessageDialog(null,"registro salvo");}catch(IOExceptioner){JOptionPane.showMessageDialog(null,"Erro ao adicionar registro:"+er.getMessage());}}
o que pode ser agora?
T
thingol
Consulta deve implementar a interface java.io.Serializable.
A
arturleitao
Vlew gente agora esta func muito obrigado thingol!!!
T
thingol
Só sendo um pouco chato (os velhos costumam ser mais chatos, mas é porque eles sofreram mais ).
Ponha nomes significativos em suas variáveis.
Uma variável chamada “entrada” que é um ObjectOutputStream (output = saída) confunde a gente horrores (tanto eu que li seu código quanto você, daqui a alguns dias, vamos ter problemas para entender o código. )