Hola a todos, tengo problemas para cargar un fichero, grabar lo hace correctamente lo que tengo problemas es a la hora de caragr los datos que al ejecutar me da el siguiente error:
Exception in theread main java.lang.ClassCastException:MisLibros
at Libros.<init>(Ejemplo78.java:80)
at Ejemplo78.main(ejemplo78.java.10)
He podifo ver que el problema viene del readObject(), grabar si lo hacer correctamente
Os pongo el codigo por si me podeis hecha runa mano
imports
public class Ejemplo78{
public static void main(String[] args)throws IOException,ClassNotFoundException{
Libros mv=new Libros();
mv.setVisible(true);
}
}
class Libros extends JFrame{
//Declaracion de variables
***;
MisLibros lib;
***
ArrayList<MisLibros>miarray=new ArrayList<MisLibros>();
fileInputStream fs;
ObjectInputStream os;
FileOutputStream fsm;
ObjectOutputStream osm;
String path="G:\\Java\\Ejemplos Java\\datos2.dat";
File mifichero=new File(path);
public Libros()throws IOException,ClassNotFoundException{
.....
//Apertura de fichero
if(mifichero.exists()){
JOptionPane.showMessageDialog(null,"SI");
fs=new FileInputStream(mifichero);
os=new ObjectInputStream(fs);
miarray=(ArrayList)os.readObject();
os.close();
}else{
JOptionPane.showMessageDialog(null,"NO");
}
//Inicializacion objetos de los cuadros de dialogo
....
//Fin inicializacion
ActionListener al=new ActionListener(){
public void actionPerformed(ActionEvent e){
Object ob=e.getSource();
if(ob==cmdAlta){
Alta.setVisible(true);
}else if(ob==cmdBuscar){
Buscar.setVisible(true);
}else if(ob==cmdBorrar){
Borrar.setVisible(true);
}else if(ob==cmdNavegar){
Navegar.setVisible(true);
}
}
};
cmdAlta.addActionListener(al);
cmdBuscar.addActionListener(al);
cmdBorrar.addActionListener(al);
cmdNavegar.addActionListener(al);
//Evento cierre de ventana
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
try{
fsm=new FileOutputStream(path);
osm=new ObjectOutputStream(fsm);
osm.writeObject(lib);
osm.close();
}catch (IOException ex){
}
System.exit(0);
}
}
});
}
public void AnadirDatos(){
try{
String ISBN=Alta.txtISBN.getText();
String TITULO=Alta.txtTitulo.getText();
String AUTOR=Alta.txtAutor.getText();
String EDITORIAL=Alta.cbEditorial.getSelectedItem().toString();
lib= new MisLibros (ISBN,TITULO,AUTOR,EDITORIAL);
miarray.add(lib);
fsm=new FileOutputStream(path);
osm=new ObjectOutputStream(fsm);
osm.writeObject(lib);
osm.close();
}catch(IOException ex){
}
}
}
//Fin Ventana Principal
//Cuadro de dialogo Alta
class JAlta extends JDialog{
//Declaracion de variables
public JAlta(java.awt.Frame parent,boolean modal)throws IOException,ClassNotFoundException{
//Inicializacion de variables
//Eventos
//Evento pulsacion botones
ActionListener al=new ActionListener(){
public void actionPerformed(ActionEvent e){
Object ob=e.getSource();
if(ob==cmdGuardar){ VentanaPrincipal.AnadirDatos();
JOptionPane.showMessageDialog(null,VentanaPrincipal.miarray.size());
txtISBN.setText("");
txtTitulo.setText("");
txtAutor.setText("");
cbEditorial.setSelectedIndex(0);
}else{
txtISBN.setText("");
txtTitulo.setText("");
txtAutor.setText("");
cbEditorial.setSelectedIndex(0);
}
}else if(ob==cmdCancelar){
CerrarVentana();
}
}
};
cmdGuardar.addActionListener(al);
cmdCancelar.addActionListener(al);
//Evento Cerrar Ventana
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
CerrarVentana();
}
});
}
//Funciones
}
//Fin Cuadro de dialogo Alta
//Clase Libreria, serializacion de fichero
class MisLibros implements Serializable{
String numlibro;
String Titulo;
String Autor;
String Editorial;
public MisLibros (String ISBN,String TITULO,String AUTOR,String EDITORIAL){
numlibro=ISBN;
Titulo=TITULO;
Autor=AUTOR;
Editorial=EDITORIAL;
}
public void setISBN(String ISBN){
numlibro=ISBN;
}
public String getISBN(){
return numlibro;
}
public void setTitulo(String TITULO){
Titulo=TITULO;
}
public String getTitulo(){
return Titulo;
}
public void setAutor(String AUTOR){
Autor=AUTOR;
}
public String getAutor(){
return Autor;
}
public void setEditorial(String EDITORIAL){
Editorial=EDITORIAL;
}
public String setEditorial(){
return Editorial;
}
}
//Fin clase Libreria