zoukankan      html  css  js  c++  java
  • java 实现自定义事件

    import java.io.FileNotFoundException;
    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.text.DecimalFormat;
    import java.util.ArrayList;
    import java.util.EventListener;
    import java.util.List;
    
    public class Test {
        
        public static void main(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(new DownloadListener() {
                @Override
                public void DownloadProgress(int totalLength ,int bytesCompleted) {
                    System.out.println("订阅者1进度,已下载:" + bytesCompleted + "字节");
                } 
            });
            
            fd.addDownloadListener(new DownloadListener() {
                @Override
                public void DownloadProgress(int totalLength ,int bytesCompleted) {
                    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 implements DownloadListener
        {
            private List<DownloadListener> downloadListeners = new ArrayList<DownloadListener>();
            
            private String URL = null;
            private String savePath = null;
            
            public FileDownloader(String url, String savePath)
            {
                this.URL = url;
                this.savePath = savePath;
            }
            
            @SuppressWarnings("resource")
            public boolean download()
            {
                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;
            }
    
            @Override
            public void DownloadProgress(int totalLength ,int bytesCompleted) {
                for(DownloadListener listener : downloadListeners){
                    listener.DownloadProgress(totalLength ,bytesCompleted);
                }
            }
            
            public void addDownloadListener(DownloadListener listener)
            {
                downloadListeners.add(listener);
            }
        }
        
        public interface DownloadListener extends EventListener 
        {
            public void DownloadProgress(int totalLength ,int bytesCompleted);
        }
    
        
    }
  • 相关阅读:
    19.Mybatis之动态SQL
    18.Mybatis的配置文件标签属性自动提示
    17.Mybatis的基本使用及入门案例
    16.jQuery属性操作
    15.jQuery淡入淡出效果
    14.jQuery常用方法
    13.jQuery选择器
    12.JavaScript基础知识
    11.浅析Java中的final关键字
    10.基于Tomcat的SmartUplaod文件上传
  • 原文地址:https://www.cnblogs.com/nanfei/p/8418663.html
Copyright © 2011-2022 走看看