Autor Tema: Ayuda con lazo while java leer datos desde fichero FileInputStream  (Leído 3011 veces)

Notanumber

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 14
    • Ver Perfil
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;}
    }
« Última modificación: 02 de Septiembre 2014, 18:36 por Alex Rodríguez »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Ayuda con lazo while
« Respuesta #1 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.

Responsable de departamento de producción aprenderaprogramar.com

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".