Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda con BufferedReader (java.io.IOException: Stream closed)

Estas en el tema de Ayuda con BufferedReader (java.io.IOException: Stream closed) en el foro de Java en Foros del Web. ¡Hola buenas! Soy nuevo, voy soltando mis dudas por aquí, espero aprender y poder aportar en un futuro. Mi duda es la siguiente: Tengo el ...
  #1 (permalink)  
Antiguo 27/01/2011, 17:56
 
Fecha de Ingreso: enero-2011
Mensajes: 105
Antigüedad: 9 años
Puntos: 10
Ayuda con BufferedReader (java.io.IOException: Stream closed)

¡Hola buenas! Soy nuevo, voy soltando mis dudas por aquí, espero aprender y poder aportar en un futuro. Mi duda es la siguiente:

Tengo el siguiente código, sin duda hice algo mal, lo que quiero es leer datos de varios ficheros y escribirlos en otro conforme los vaya leyendo

Código:
//Leemos nuestros Ficheros para anotar la Fecha y el importe de cada Factura en nuestro Fichero ResumenGlobal
        for (int i = 1; i < NumFacturas; i++)
        {
            fr = new FileReader("Factura " + Integer.toString(i) + ".txt");
            Leer = new BufferedReader(fr);

            //Desechamos las lineas que no nos valen
            Leer.readLine();
            Leer.readLine();
            Leer.readLine();

            //Guardamos la fecha
            String FechaFactura = Leer.readLine().substring(5,24);

            //Desechamos las lineas que no nos valen
            Leer.readLine();
            Leer.readLine();
            Leer.readLine();
            Leer.readLine();
            Leer.readLine();

            //Guardamos el importe Total
            String ImporteTotal = Leer.readLine().substring(24,28);

            //Escribimos en el Fichero ResumenGlobal los Datos de cada factura
            Escribir.println("Factura: " + FechaFactura + " Importe: " + ImporteTotal.trim()  + " €");

            CajaTotal += Double.parseDouble(ImporteTotal);        
        }
Las facturas que intento leer son como esta:
Código:

******* LA CARMINA **********
******* Doctor Alberca 5 ****
******* 13600 VALENCIA ******
**** 27/01/2011 18:19:53 ****

Factura: 
Lejia Marca Hacendaño	2.4 €
Leche Marca Hacendaño	2.4 €
Huevos Marca Hacendaño	4.8 €
        Total Factura:  9.6 € 

Bueno pues el problema esta en que a la vuelta del bucle for, cuando accede por segunda vez, me lanza la java.io.IOException: Stream closed, ¿Cuando utilizas la palabra new no vuelve a crear el objeto? ¿Hay alguna forma de hacer un bucle para leer varios ficheros usando un mismo FileReader y BufferedReader?¿Es posible?

y de paso también si alguien sabe alguna manera de Leer directamente una Linea dentro de un fichero de una forma mas correcta que la que he utilizado yo
  #2 (permalink)  
Antiguo 28/01/2011, 02:56
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 10 años, 9 meses
Puntos: 306
Respuesta: Ayuda con BufferedReader (java.io.IOException: Stream closed)

No sé si será por eso, pero si abres un archivo, debes cerrarlo cuando termines de usarlo.

Leer.close() por cada archivo que abras.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 28/01/2011, 04:35
 
Fecha de Ingreso: enero-2011
Mensajes: 105
Antigüedad: 9 años
Puntos: 10
Respuesta: Ayuda con BufferedReader (java.io.IOException: Stream closed)

he probado tambien al terminar el bucle... pero se ve que ya lo hace solo...
  #4 (permalink)  
Antiguo 29/01/2011, 13:34
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 10 años, 9 meses
Puntos: 306
Respuesta: Ayuda con BufferedReader (java.io.IOException: Stream closed)

El problema lo debes tener en tu método para escribir en archivo, he probado este código y funciona perfectamente.

Código Javascript:
Ver original
  1. public static void main(String[] args) {
  2.        
  3.         String total;
  4.         BufferedReader Leer;
  5.         PrintWriter escribir = null;
  6.         try {
  7.             escribir = new PrintWriter(new File("total.txt"));
  8.         } catch (FileNotFoundException e1) {
  9.             // TODO Auto-generated catch block
  10.             e1.printStackTrace();
  11.         }
  12.         try {
  13.             for (int i = 1; i < 3; i++)
  14.             {
  15.                 Leer = new BufferedReader(new FileReader("factura" + Integer.toString(i) + ".txt"));
  16.  
  17.                 //Desechamos las lineas que no nos valen
  18.                 Leer.readLine();
  19.                 Leer.readLine();
  20.                 Leer.readLine();
  21.  
  22.                 //Guardamos la fecha
  23.                 String FechaFactura = Leer.readLine().substring(5,24);
  24.  
  25.                 //Desechamos las lineas que no nos valen
  26.                 Leer.readLine();
  27.                 Leer.readLine();
  28.                 Leer.readLine();
  29.                 Leer.readLine();
  30.                 Leer.readLine();
  31.  
  32.                 //Guardamos el importe Total
  33.                 String ImporteTotal = Leer.readLine().substring(24,28);
  34.                 total = "Factura: " + FechaFactura + " Importe: " + ImporteTotal.trim()  + " €";
  35.                 //Escribimos en el Fichero ResumenGlobal los Datos de cada factura
  36.                 System.out.println(total);
  37.                 escribir.println(total);
  38.             }
  39.             escribir.close();
  40.         } catch (FileNotFoundException e) {
  41.             // TODO Auto-generated catch block
  42.             e.printStackTrace();
  43.         } catch (IOException e) {
  44.             // TODO Auto-generated catch block
  45.             e.printStackTrace();
  46.         }      
  47.  
  48.     }
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #5 (permalink)  
Antiguo 29/01/2011, 17:14
 
Fecha de Ingreso: enero-2011
Mensajes: 105
Antigüedad: 9 años
Puntos: 10
Respuesta: Ayuda con BufferedReader (java.io.IOException: Stream closed)

estoy perplejo :o lo unico que hice fue cambiar la declaracion de mis objetos, en lugar de hacerlo en dos pasos, hacerlo en uno solo

Leer = new BufferedReader(new FileReader("Factura " + Integer.toString(i) + ".txt"));

Muchas gracias Xerelo por tu ayuda :)

Etiquetas: closed, stream
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:15.