import java.io.*;
import java.net.*;
import javax.swing.JProgressBar;
public class guncelleme implements Runnable{
private int dosyaBoyutu = 0;
private OutputStream output = null;
private URLConnection UrlBaglanti = null;
private InputStream input = null;
private JProgressBar statusBar = null;
private volatile Thread proc = null;
public guncelleme(String urlbaglanti, String kayitYolu,JProgressBar progresBar){
//Burda internet adresine bağlantı sağlanıyor. Dosya okunuyor ve yazılıyor.
proc = new Thread(this);
try {
URL UrlLoc = new URL(urlbaglanti);
output = new BufferedOutputStream(new FileOutputStream(kayitYolu));
UrlBaglanti = UrlLoc.openConnection();
input =UrlBaglanti.getInputStream();
//İnternetteki dosyanın boyutu alınıyor ve JprogressBar'a aktarılıyor.
dosyaBoyutu = UrlBaglanti.getContentLength();
statusBar = progresBar;
} catch (Exception exception) {
System.out.println("Dosya alınamadı veya kaydedilemedi !");
}
// Herzaman indirilmeden sonra başlatılmalı.
proc.start();
}
public void run() {
}
//Bu metodu kullanarak ağacı ve indirmeyi durduruyoruz.
public void IndirmeyiDurdur(){
proc.interrupt();
}
public void Indir(){
try {
byte[] yaz = new byte[4096];
int bytesOku;
long bytesYaz = 0;
// JprogressBarın ayarları
statusBar.setMinimum(0);
statusBar.setMaximum(dosyaBoyutu);
statusBar.setValue(0);
statusBar.setStringPainted(true);
//Verinin çıktısına bakılıyor ve hardiske yazılıyor.
while((bytesOku = input.read(yaz)) != -1){
output.write(yaz, 0, bytesOku);
//Veri şuan yazılıyor.
bytesYaz += bytesOku;
//Anlık olarak progresBara indirilbe bilgisi yolluyor.
statusBar.setValue((int)bytesYaz);
}
//İnput ve output değerleri temizleniyor.
input.close();
output.close();
} catch (Exception exception) {
System.out.println("Dosya yazılamadı !");
}
}
}