Validar Buffered

De nuevo reo yo! Que lata doy verdad pero tengo una duda con el buffered.
Ya lo coloque en mi código, y si funciona todo bien y eso. Esta ventana (de donde es el pedezo de código) si la cierro y la vuelvo abrir si me recupera el ultimo numero todo bien churumbelo(bonito).
Pero cuando cierro la aplicación por completo, y la vuelvo abrir y abro la ventana correspondiente esta SI sigue con la numeración, pero se salta el ultimo numero es decir empiezo 1,2,3,4,5 Cierro la aplicación y vuelvo a abrir la ventana y comienza 7,8,9,10. NO me muestra el ultimo numero.
Ayuda!
Te coloco el código:
Estos los declare desde el princippio
BufferedWriter out;
 BufferedReader in;
 String str;
 static int contador;
////////////////////////////////////////////////////////////////////////////
jbReporte=new JButton("Reportes", new ImageIcon("iconos/reporte.png"));
     jp.add(jbReporte);
     jbReporte.setBounds(470,80,110,25);
     jbReporte.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent ae){  
        JasperViewer jasperViewer;
        Connection con = null;
        Map<String, String> parametros = new HashMap<String, String>();
                         parametros.put("p_nom_per",jtfPer.getText());
                         parametros.put("p_nom_ubi",jtfUbi.getText());
                        parametros.put("p_nom_zona",jtfZona.getText());
                        parametros.put("p_num_rep",jtfReporte.getText());
                         parametros.put("nom_per","nom_ubi");
                     try{ 
                    try{
                     con = Conexion.getConexion();
         in = new BufferedReader(new FileReader("secuencia.txt"));
         while ((str = in.readLine()) != null) { contador = Integer.parseInt(str); }
         in.close(); 
         contador++;
         out = new BufferedWriter(new FileWriter("secuencia.txt"));
         out.write(String.valueOf(contador));
         out.close();
         JasperReport jasperReport = (JasperReport)JRLoader.loadObject("reportes/general.jasper");
                                 JasperPrint imprime =  JRFiller.fillReport(jasperReport,parametros,con);
                                 jasperViewer = new JasperViewer(imprime,false);
                                jasperViewer.show();
                     jtfReporte.setText(contador+"");
                             }catch(SQLException sqle){
                                System.out.println("No se logro la conexion  " + sqle.getMessage());
                             }
                         }catch (Exception e){
                          e.printStackTrace();
                         }
      }
     });

1 respuesta

Respuesta
1
¿Cuándo cierras la aplicación que numero se queda guardo en el archivo?, Es posible que se este guardando el siguiente numero y no el actual, no veo error en tu código, creo que más bien es un error de lógica, es decir en algún lado estas aumentando el contador al leerlo o estas guardando el siguiente numero y no el actual.
Hola
Bueno hice la prueba y primero te hace el incremento y te guarda ese numero
Y cuando abro de nuevo la ventana no lee nada, el campo donde se muestra el numero de reporte esta vacío le doy clic en reporte(genera el reporte) y después me muestra el siguiente numero.
¿Por qué hace esto?
Gracias
Cierra tu aplicación y revisa el archivo de texto, es probable que se este quedando en blanco o que cuando lo leas realmente no este leyendo el archivo o quizás no esta encontrando el archivo.
Pero primero partamos de verificar cual es el contenido del archivo de texto después de que cierras tu aplicación, a partir de ahí podemos buscar que esta mal.
Hola
Pues ya hice lo que me comentas pero el archivo de texto no queda vacío tiene el ultimo numero, es decir
comienza 1,2,3,4,5,6,7,8,9 en la ventana se muestra el 10 y si la cierras se queda con ese 10 el archivo de texto.
Luego al abrir la ventana no me muestra ningún numero pero como te comentaba le doy clic en el botón reporte me muestra el reporte, y comienza con el 11
GRACIAS
Ok, entonces el archivo contiene el numero 10, ¿y cuándo le das al botón reporte el reporte te muestra como si fuera el 11 cuando debería ser el 10?
Disculpa por contestarte hasta hoy
¿Pero si es lo que hace te agradecería tu ayuda o por que lo hace?
Yo pienso que es por el incremento que hace cada vez que muestra el reporte pero como regresaría o detendría ese incremento.
Muchas GRACIAS
Revisando el código veo que incrementas el valor del contador luego lo guardas en el archivo, siendo este el caso y suponiendo que el archivo contiene el siguiente numero del reporte entonces aquí estaría el error, puesto que lo incrementas antes de guardarlo por lo que siempre iras un numero adelante, es decir perderás uno.
Este es un error en la lógica del programa no de como guardas o recuperas el numero del archivo.
hoooo!
Muchas GRACIAS por contestar
¿Pero entonces que hago? ¿O tu que me recomiendas hacer?
Gracias
Incrementa el valor después de haber generado el reporte, con esto sabrías que siempre lo que hay guardado en el archivo es el numero del siguiente reporte.
Muchas gracias por tu ayuda
Pero sigue igual, de todas formas he aprendido algo nuevo y eso es bueno, el profesor me dijo que hice un buen intento de echo fui la única.
Pero creo que esa felicitación te la mereces tu.
Gracias
P.D aunq seguire investigando el por que hace esto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas