java自定义事件_java 实现自定义事件

importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.net.MalformedURLException;importjava.net.URL;importjava.net.URLConnection;importjava.text.DecimalFormat;importjava.util.ArrayList;importjava.util.EventListener;importjava.util.List;public classTest {public static voidmain(String[] args)

{

Test.FileDownloader fd= new FileDownloader("http://download.microsoft.com/download/e/c/9/ec94a5d4-d0cf-4484-8b7a-21802f497309/Vs6sp6.exe","f:\\Vs6sp6.exe");

fd.addDownloadListener(newDownloadListener() {

@Overridepublic void DownloadProgress(int totalLength ,intbytesCompleted) {

System.out.println("订阅者1进度,已下载:" + bytesCompleted + "字节");

}

});

fd.addDownloadListener(newDownloadListener() {

@Overridepublic void DownloadProgress(int totalLength ,intbytesCompleted) {double percent = (double)bytesCompleted*100/(double)totalLength;

DecimalFormat df= new java.text.DecimalFormat("#.00");

System.out.println("订阅者2进度,已下载:" + df.format(percent) + "%");

}

});

fd.download();

System.out.println("任务下载完成!");

}public static class FileDownloader implementsDownloadListener

{private List downloadListeners = new ArrayList();private String URL = null;private String savePath = null;publicFileDownloader(String url, String savePath)

{this.URL =url;this.savePath =savePath;

}

@SuppressWarnings("resource")public booleandownload()

{int bytesum = 0;int byteread = 0;

URL url;try{

url= new URL(this.URL);

}catch(MalformedURLException e1) {

e1.printStackTrace();return false;

}try{

URLConnection conn=url.openConnection();int totalLength =conn.getContentLength();

InputStream inStream=conn.getInputStream();

FileOutputStream fs= new FileOutputStream(this.savePath);byte[] buffer = new byte[1204];while ((byteread = inStream.read(buffer)) != -1) {

bytesum+=byteread;

fs.write(buffer,0, byteread);

DownloadProgress(totalLength ,bytesum);

}

}catch(FileNotFoundException e) {

e.printStackTrace();return false;

}catch(IOException e) {

e.printStackTrace();return false;

}catch(Exception e){

e.printStackTrace();return false;

}return true;

}

@Overridepublic void DownloadProgress(int totalLength ,intbytesCompleted) {for(DownloadListener listener : downloadListeners){

listener.DownloadProgress(totalLength ,bytesCompleted);

}

}public voidaddDownloadListener(DownloadListener listener)

{

downloadListeners.add(listener);

}

}public interface DownloadListener extendsEventListener

{public void DownloadProgress(int totalLength ,intbytesCompleted);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值