Java - at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)

 
Vista:
sin imagen de perfil

at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)

Publicado por Christian (6 intervenciones) el 29/05/2017 17:30:12
Buenas tardes a todos,
me han pedido en un práctico de java, que haga una especie de "tienda" y que guarde los objetos "Venta" en un archivo y luego los pueda leer.

Al escribirlos, y luego abrir el archivo(desde el explorador), veo que parece todo en orden, se ven los códigos que se esperan ver de un objeto serializado.

Los objetos "venta", tienen a su vez objetos Int (codigo de la venta), CD (cd vendido), CLIENTE (a quien se ha vendido).

El error está en esta línea:
venta =(Venta)objetos.readObject();

se supone que si objetos.readObject me devuelve un objeto venta, debería poder hacer
venta.getCd().getCodigo() y me tendría que devolver el Codigo del Cd guardado en esa venta veradad? pero no llega a esa línea por que me da error en la que puse arriba..

y este es el mensaje de error completo:
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at Principal.main(Principal.java:185)

pero al intentar leerlo, me da el error del título este es mi código:

try {
ObjectInputStream objetos= new ObjectInputStream(new FileInputStream(fichero));
try {
Venta venta= new Venta(0, null, null, null, null);
venta =(Venta)objetos.readObject();
System.out.println("Código del cd desde archivo"+venta.getCd().getCodigo());

objetos.close();}
catch (ClassNotFoundException e) {
e.printStackTrace();}}

catch (FileNotFoundException e) {

e.printStackTrace();}

catch (IOException e) {
e.printStackTrace();}

Nuevamente decir, estoy aprendiendo Java, y cual quier sugerencia y explicación, será bienvenida..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)

Publicado por Christian (6 intervenciones) el 29/05/2017 18:52:19
Por cierto, Así es como escribo los objetos:

1
2
3
4
5
6
7
FileOutputStream temp = new FileOutputStream(fichero);//Stream del archivo
ObjectOutputStream escribiendo = new ObjectOutputStream(temp);
	if (!listaventas.isEmpty()){
		for (int i=0; i<listaventas.size(); i++){
			escribiendo.writeObject(listaventas.get(i));
			escribiendo.flush();}
	}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar