Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Problemas JProgressBar

Hola a tod@s:

Estoy haciendo unas pequeñas pruebas con transferencias de archivos, por el momento de disco a disco. La transferencia de ficheros la realizo sin problemas, ya que los archivos se copian perfectamente de un sitio a otro. El problema que me surge es que en el momento de representar la transferencia mediante un JProgressBar no siempre muestra el tanto por ciento de la transferencia. Es decir, con algunos archivos si y con otros no. Seguro seguro que el fallo es mio, pero no veo dónde.


BufferedInputStream entrada = null;
BufferedOutputStream salida = null;
Dialogo d = null;
File origen = null, destino = null;
JFileChooser selector = new JFileChooser();
selector.setMultiSelectionEnabled(false);
int res = selector.showOpenDialog(selector);
if(res == JFileChooser.APPROVE_OPTION){
origen = selector.getSelectedFile();
res = selector.showSaveDialog(selector);
if(res == JFileChooser.APPROVE_OPTION){
try {
destino = selector.getSelectedFile();
d = new Dialogo();
d.jLabel1.setText("Origen: ".concat(origen.getAbsolutePath()));
d.jLabel2.setText("Destino: ".concat(destino.getAbsolutePath()));
d.jProgressBar1.setStringPainted(true);
d.jProgressBar1.setMaximum((int) origen.length());
d.setVisible(true);
int a=0, b=0;
byte [] byteArray = new byte[8192];
entrada = new BufferedInputStream(new FileInputStream(origen));
salida = new BufferedOutputStream(new FileOutputStream(destino));
// d.activo es una variable boolean asociada a un botón "Cancelar"
while((a = entrada.read(byteArray)) != -1 && d.activo){
salida.write(byteArray);
b+=a;
d.jProgressBar1.setValue(b);
}
} catch (FileNotFoundException ex) {
Logger.getLogger(JavaApplication7.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(JavaApplication7.class.getName()).log(Level.SEVERE, null, ex);
} finally {
// JavaApplication7.cerrarCon() es un método para cerrar los Stream.
JavaApplication7.cerrarCon(entrada, salida);
}
}
}

Creo que el código, sin ser sofisticado está bien escrito. Intuyo que pueda ser un problema con el tamaño de los archivos pero no sé por qué.

Para más datos estoy utilizando NetBeans 7.1 para 64 bits en Windows 7 también en 64 bits.

Alguna explicación u otra forma de realizar esto mismo?

Gracias.

marzo 30, 2012 | Registered Commentercalimero78