Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > IOException siempre me devuelve un null

Este función los que hace es recuperar los datos de un fichero de objetos y meterlo es una lista. La función en si funciona perfectamente, pero siempre salta un null, cuando se ejecuta.
public void recuperaFichero() throws ClassNotFoundException{
Datoscliente datos;
//vaciamos la lista;
primero=null;
FileInputStream salida=null;
ObjectInputStream fsalida=null;
try{

salida = new FileInputStream(listado); //listado es donde guardo la ruta del fichero
while(true){
fsalida=new ObjectInputStream(salida);
datos = (Datoscliente) fsalida.readObject();
apilarFinal(datos);

}

}catch(IOException ex){
System.out.println(ex.getMessage());
}finally{
try{
if(fsalida!=null){
fsalida.close();
}
}catch(IOException ex){
System.out.println(ex.getMessage());
}
}

}

abril 13, 2014 | Registered Commenterjorgenaron

Guenas.

No pones la excepción.
De todos modos me maravilla que digas que el método corre bien.
Tienes un bucle infinito. Dentro de el creas continuamente canales de lectura y no los cierras.

Un saludo

abril 14, 2014 | Unregistered CommenterPaposo

Si en lugar de System.out.println(ex.getMessage()); pones ex.printStackTrace(); puedes obtener informacion mucho mas valiosa que un simple "null" sobre la excepcion que se produce.

Un saludo

abril 14, 2014 | Unregistered CommenterUnoPorAhi

Al poner el ex.printStackTrace(), pasa esto:

at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2325)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2794)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:801)
at java.io.ObjectInputStream.(ObjectInputStream.java:299)
at pila.Lista.recuperaFichero(Lista.java:116)
at pila.Pila.main(Pila.java:70)

abril 14, 2014 | Registered Commenterjorgenaron

Porque no pones la pila completa? Cual es la excepcion? EOFException?

Bueno, da igual. En todo caso tiene pinta de que lo que te pasa es que no estas cerrando el ObjectInputStream al final de cada iteracion.
En cuanto lo resuelvas entonces seguramente ya te funcionara correctamente el bucle infinito.

Un saludo

abril 15, 2014 | Unregistered CommenterUnoPorAhi

http://www.javahispano.org/contributor/23846130 (paposo) tiene toda la razón, tienes un bucle infinito! Asegúrate de mirar bien tu codigo

abril 23, 2014 | Registered Commentersuper