En este ejemplo veremos como descargar un archivo y en una barra de progreso ver el estado de la descarga. Comencemos por la interfaz:
Ahora crearemos la clase que se encargará de descargar el archivo y animar la barra de progreso.package modelo; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.logging.Level; import java.util.logging.Logger; import vista.principal; /** * * @author pablo */ public class hiloDescargar implements Runnable{ principal p; String ar; public hiloDescargar(principal p, String ar){ this.p = p; this.ar = ar; } @Override public void run() { try { //Creamos una URL usando el String recibido del campo de texto URL url = new URL(ar); URLConnection urlCon = url.openConnection(); //Creamos un archivo para la descarga igual que el archivo remoto File file2 = new File(url.toString()); File file = new File(file2.getName()); //Abrimos streamers y creamos un array de bytes para ir almacenando hay //los datos de descarga y enviarlos al archivo try (FileOutputStream fos = new FileOutputStream(file)) { InputStream is = urlCon.getInputStream(); byte [] array = new byte[1000]; int leido = is.read(array); //Aplicando valores a la barra de progreso int maximo = urlCon.getContentLength(); p.barra.setMinimum(0); p.barra.setMaximum(maximo); p.barra.setValue(0); int actual = 0; while (leido > 0) { fos.write(array,0,leido); leido=is.read(array); p.barra.setValue(actual); actual += leido; p.barra.setString("Descargando "+actual+"/"+maximo+" bytes"); } fos.close(); } } catch (MalformedURLException ex) { Logger.getLogger(hiloDescargar.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(hiloDescargar.class.getName()).log(Level.SEVERE, null, ex); } } }Ahora tan solo nos queda crear un objeto hiloDescargar e introducirlo dentro de un hilo. Usaremos un ActionPerformed sobre el botón de descargar para ello.
this.p.btnDescargar.setActionCommand("btnDescargar"); this.p.btnDescargar.addActionListener((ActionEvent ae) -> { hiloDescargar h = new hiloDescargar(p, p.txtDireccion.getText()); Thread t = new Thread(h); t.start(); });Con esto estaría terminada la aplicación. Proyecto de netbeans : aquí.
Etiquetas: hilos, java, jprogressbar, streamers, thread
0 Comments:
Entrada más reciente Entrada antigua Inicio
Suscribirse a:
Enviar comentarios (Atom)
Con la tecnología de Blogger.