[工具库]JFileDownloader工具类——多线程下载网络文件,并保存在本地-阿里云开发者社区

开发者社区> 吞吞吐吐的> 正文

[工具库]JFileDownloader工具类——多线程下载网络文件,并保存在本地

简介:
+关注继续查看

本人大四即将毕业的准程序员(JavaSE、JavaEE、android等)一枚,小项目也做过一点,于是乎一时兴起就写了一些工具。

我会在本博客中陆续发布一些平时可能会用到的工具。

代码质量可能不是很好,大家多担待!

代码或者思路有不妥之处,还希望大牛们能不吝赐教哈!

 

以下代码为本人原创,转载请注明:

本文转载,来自:http://www.cnblogs.com/tiantianbyconan/archive/2013/02/20/2919132.html

 

JFileDownloader:用于多线程下载网络文件,并保存在本地。

源码如下:

1.JFileDownloader类:主要负责下载的初始化可启动工作。

View Code

 

2.JFileDownloadListener接口:该接口用于监听JFileDownloader下载的进度。

View Code

 

3.JFileDownloaderNotificationThread类:该线程为通知下载进度的线程。

View Code

 

4.JFileDownloadThread类:真正的下载线程,该线程用于执行该线程所要负责下载的数据。

View Code

 

使用方法如下:

复制代码
 1 String urlPath = "http://localhost:8080/firstserver/files/test.zip";
 2 String destFilePath = "C:\\Users\\admin\\Desktop\\杂\\临时仓库\\test.zip";
 3 int threadCount = 3;
 4 
 5 JFileDownloader downloader = new JFileDownloader(urlPath, destFilePath, threadCount);
 6 //或者:
 7 JFileDownloader downloader = new JFileDownloader()
 8             .setUrlPath(urlPath)
 9             .setDestFilePath(destFilePath)
10             .setThreadCount(threadCount)
11             .setFileDownloadListener(new JFileDownloadListener() { // 设置进度监听器
12                     public void downloadProgress(int progress, double speed, long remainTime) {
13                         System.out.println("文件已下载:" + progress + "%,下载速度为:" + speed + "kb/s,剩余所需时间:" + remainTime + "毫秒");
14                     }
15                     public void downloadCompleted(File file, long downloadTime) {
16                         System.out.println("文件:" + file.getName() + "下载完成,用时:" + downloadTime + "毫秒");
17                     }
18             });
19     try {
20         downloader.startDownload(); // 开始下载
21     } catch (Exception e) {
22         e.printStackTrace();
23     }
复制代码

 

 

本文转自天天_byconan博客园博客,原文链接:http://www.cnblogs.com/tiantianbyconan/archive/2013/02/20/2919132.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java多线程高并发学习笔记(二)——深入理解ReentrantLock与Condition
锁的概念 从jdk发行1.5版本之后,在原来synchronize的基础上,增加了重入锁ReentrantLock。 本文就不介绍synchronize了,有兴趣的同学可以去了解一下,本文重点介绍ReentrantLock。
1073 0
ML之FE:基于load_mock_customer数据集(模拟客户,单个DataFrame)利用featuretools工具实现自动特征生成/特征衍生
ML之FE:基于load_mock_customer数据集(模拟客户,单个DataFrame)利用featuretools工具实现自动特征生成/特征衍生
20 0
java多线程 -- ReadWriteLock 读写锁
写一条线程,读多条线程能够提升效率。 写写/读写 需要“互斥”;读读 不需要互斥. ReadWriteLock 维护了一对相关的锁,一个用于只读操作,另一个用于写入操作。只要没有 writer,读取锁可以由多个 reader 线程同时保持。
787 0
多线程编程学习四(Lock 的使用)
一、前言     本文要介绍使用Java5中 Lock 对象,同样也能实现同步的效果,而且在使用上更加方便、灵活,主要包括 ReentrantLock 类的使用和ReentrantReadWriteLock 类的使用。
813 0
iOS网络编程之七——本地用户凭证Cookie的应用
iOS网络编程之七——本地用户凭证Cookie的应用
12 0
4852
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载