Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Notanumber en 18 de Abril 2014, 02:38

Título: Ayuda con lazo while java leer datos desde fichero FileInputStream
Publicado por: Notanumber en 18 de Abril 2014, 02:38
Buenas, a continuación muestro un codigo para leer objectos de un fichero de text. No entiendo este while, si es while(true) no sería un lazo infinito que no se pararia nunca? porque ois.readObject digamos que avanza solo y lee todos los objetos que hay en ois si se ejecuta una y otra vez ois.readObject? Gracias y un saludo.
A mi entender creo que el lazo se para porque se lanza una excepción cuando ois.readObject lee todos los objetos y le toca leer uno vacio, pero sigo sin saber porque ois.readObject avanza y lee todos los objetos presentes en ois y no solo el primero. UN saludo


public  ArrayList getLectura() throws ClassNotFoundException, IOException,NullPointerException{
     listadenombres.clear();
    ObjectInputStream ois=null;
    try{
        File f = new File("datos");
        FileInputStream fis = new FileInputStream(f);
        ois = new ObjectInputStream(fis);
        while(true){
           
            listadenombres.add(ois.readObject());       
        }
    }
    catch(IOException io){
    }
    finally{
        ois.close();
    return listadenombres;}
    }
Título: Re:Ayuda con lazo while
Publicado por: César Krall en 18 de Abril 2014, 12:27
Hola, cuando pegues código usa el botón # del editor y pega el código dentro de las etiquetas [ code ] ... [ /code] por favor.

while true te mete en un bucle infinito a no ser que algo te saque del bucle infinito como una instrucción break o como una excepción. En este caso al producirse la excepción se ejecuta el bloque catch, se cierra ois y se devuelve como resultado listadenombres. Esta forma de operar podemos calificarla de extraña y normalmente no recomendable: las excepciones no se deben considerar normalmente como parte del flujo del programa, sino estar previstas para situaciones excepcionales. Saludos.