error en lectura cannot be cast ....
Publicado por Uri (2 intervenciones) el 20/01/2013 19:19:26
Hola,
Estoy empezando en esto del Java y tengo un ejercicio el cual me hace crear una especie de estantería multimedia.
El tema es que al compilar me sale el típico mensaje de : Error en la lectura del ficheroejerciciofinal.clasesbase.Pelicula cannot be cast to java.lang.String
y no veo donde está el problema, a ver si alguien me puede dar alguna pista... os pego aquí el código...:
package ejerciciofinal.gestor;
import ejerciciofinal.clasesbase.EstanteriaMultimedia;
import ejerciciofinal.clasesbase.Pelicula;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.*;
public class EscrituraLecturaDeObjetosMultimedia {
// VARIABLES
private FileOutputStream fileOutPutStream;
private FileInputStream fileInPutStream;
private ObjectOutputStream escritura;
private ObjectInputStream lectura;
private String archivo;
// CONSTRUCTORES
public EscrituraLecturaDeObjetosMultimedia(String archivo) {
this.archivo = archivo;
}
// METODOS
public void escrituraObjetos(EstanteriaMultimedia estanteriaMultimedia) throws IOException {
fileOutPutStream = new FileOutputStream(archivo);
escritura = new ObjectOutputStream(fileOutPutStream);
for (int i = 0; i < estanteriaMultimedia.size(); i++) {
escritura.writeObject(estanteriaMultimedia.get(i));
}
escritura.close();
}
public ArrayList lecturaObjetos( int numObjetos) throws Exception,FileNotFoundException,IOException
{
ArrayList array = new ArrayList(numObjetos);
this.lectura = new ObjectInputStream(new FileInputStream("estanteria.dat"));
for(int i=0;i<numObjetos;i++)
{
String cadena = (String) this.lectura.readObject()+"\n";
array.add(cadena);
}
this.lectura.close();
return array;
}
public static void main(String[] args) {
String fichero;
EscrituraLecturaDeObjetosMultimedia ejercicio= new EscrituraLecturaDeObjetosMultimedia("estanteria.dat");
EstanteriaMultimedia objeto=new EstanteriaMultimedia(1);
objeto.add( new Pelicula( "algo","algos","assa","algos s" ) );
try{
ejercicio.escrituraObjetos(objeto);
}
catch(IOException e){
System.out.println("Error al escribir en el archivo"+e.getMessage());
}
try{
ArrayList array = ejercicio.lecturaObjetos(3);
System.out.println(array.toString());
}catch(FileNotFoundException f){
System.out.println("Fichero no encontrado"+f.getMessage());
}catch(Exception e){
System.out.println("Error en la lectura del fichero"+e.getMessage());
}
}
}
y la clase Pelicula tiene este código:
package ejerciciofinal.clasesbase;
public class Pelicula extends Multimedia{
private String actorPrincipal;
public Pelicula(String titulo, String autor,String duracion, String actor)
{
super( titulo, autor, duracion );
this.setActorPrincipal(actor);
}
@Override
public String toString()
{
String actores = "Protagonizado por ";
if( actorPrincipal != null ){
actores += getActorPrincipal();
}
return super.toString() + "\n" + actores;
}
public String getActorPrincipal() {
return actorPrincipal;
}
public void setActorPrincipal(String actorPrincipal) {
this.actorPrincipal = actorPrincipal;
}
}
Gracias de antemano!
Estoy empezando en esto del Java y tengo un ejercicio el cual me hace crear una especie de estantería multimedia.
El tema es que al compilar me sale el típico mensaje de : Error en la lectura del ficheroejerciciofinal.clasesbase.Pelicula cannot be cast to java.lang.String
y no veo donde está el problema, a ver si alguien me puede dar alguna pista... os pego aquí el código...:
package ejerciciofinal.gestor;
import ejerciciofinal.clasesbase.EstanteriaMultimedia;
import ejerciciofinal.clasesbase.Pelicula;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.*;
public class EscrituraLecturaDeObjetosMultimedia {
// VARIABLES
private FileOutputStream fileOutPutStream;
private FileInputStream fileInPutStream;
private ObjectOutputStream escritura;
private ObjectInputStream lectura;
private String archivo;
// CONSTRUCTORES
public EscrituraLecturaDeObjetosMultimedia(String archivo) {
this.archivo = archivo;
}
// METODOS
public void escrituraObjetos(EstanteriaMultimedia estanteriaMultimedia) throws IOException {
fileOutPutStream = new FileOutputStream(archivo);
escritura = new ObjectOutputStream(fileOutPutStream);
for (int i = 0; i < estanteriaMultimedia.size(); i++) {
escritura.writeObject(estanteriaMultimedia.get(i));
}
escritura.close();
}
public ArrayList lecturaObjetos( int numObjetos) throws Exception,FileNotFoundException,IOException
{
ArrayList array = new ArrayList(numObjetos);
this.lectura = new ObjectInputStream(new FileInputStream("estanteria.dat"));
for(int i=0;i<numObjetos;i++)
{
String cadena = (String) this.lectura.readObject()+"\n";
array.add(cadena);
}
this.lectura.close();
return array;
}
public static void main(String[] args) {
String fichero;
EscrituraLecturaDeObjetosMultimedia ejercicio= new EscrituraLecturaDeObjetosMultimedia("estanteria.dat");
EstanteriaMultimedia objeto=new EstanteriaMultimedia(1);
objeto.add( new Pelicula( "algo","algos","assa","algos s" ) );
try{
ejercicio.escrituraObjetos(objeto);
}
catch(IOException e){
System.out.println("Error al escribir en el archivo"+e.getMessage());
}
try{
ArrayList array = ejercicio.lecturaObjetos(3);
System.out.println(array.toString());
}catch(FileNotFoundException f){
System.out.println("Fichero no encontrado"+f.getMessage());
}catch(Exception e){
System.out.println("Error en la lectura del fichero"+e.getMessage());
}
}
}
y la clase Pelicula tiene este código:
package ejerciciofinal.clasesbase;
public class Pelicula extends Multimedia{
private String actorPrincipal;
public Pelicula(String titulo, String autor,String duracion, String actor)
{
super( titulo, autor, duracion );
this.setActorPrincipal(actor);
}
@Override
public String toString()
{
String actores = "Protagonizado por ";
if( actorPrincipal != null ){
actores += getActorPrincipal();
}
return super.toString() + "\n" + actores;
}
public String getActorPrincipal() {
return actorPrincipal;
}
public void setActorPrincipal(String actorPrincipal) {
this.actorPrincipal = actorPrincipal;
}
}
Gracias de antemano!
Valora esta pregunta


0