java多线程下载
来源:互联网 发布:制作音效软件 编辑:程序博客网 时间:2024/05/13 12:23
import java.io.InputStream;import java.io.RandomAccessFile;import java.net.HttpURLConnection;import java.net.URL;public class DownLoad {static String path = "http://127.0.0.1:8088/baiduyun.zip";static int threadCount = 3;public static void main(String[] args) {try {URL url = new URL(path);HttpURLConnection urlCon = (HttpURLConnection) url.openConnection();urlCon.setRequestMethod("GET");urlCon.setConnectTimeout(5000);int code = urlCon.getResponseCode();if(code == 200){// 获取所要下载的文件的长度int length = urlCon.getContentLength();// 创建一个一样大的文件RandomAccessFile file = new RandomAccessFile("D:\\Work\\download\\baiduyun.zip", "rw");file.setLength(length);// 计算每个线程要下载多少数据int blockSize = length/threadCount;for(int i=0;i<threadCount;i++){int startSize = i * blockSize;int endSize = (++i) * blockSize -1;if(i == threadCount-1){endSize = length-1;}new DownLoadThread(startSize,endSize,i).start();}}} catch (Exception e) {e.printStackTrace();}}private static class DownLoadThread extends Thread{private int startIndex;private int endIndex;private int threadId;public DownLoadThread(int startIndex, int endIndex, int threadId) {this.startIndex = startIndex;this.endIndex = endIndex;this.threadId = threadId;}@Overridepublic void run() {try {URL url = new URL(path);HttpURLConnection urlCon = (HttpURLConnection) url.openConnection();urlCon.setRequestMethod("GET");urlCon.setConnectTimeout(5000);// 设置Range头,用计算好的开始索引和结束索引到服务器请求数据urlCon.setRequestProperty("Range", "bytes="+startIndex+"-"+endIndex);int code = urlCon.getResponseCode();if(code == 206){System.out.println("线程" + threadId);InputStream is = urlCon.getInputStream();byte[] buffer = new byte[1024];int len = -1;RandomAccessFile file = new RandomAccessFile("D:\\Work\\download\\baiduyun.zip", "rw");file.seek(startIndex);while((len = is.read(buffer))!=-1){file.write(buffer, 0, buffer.length);}is.close();}} catch (Exception e) {e.printStackTrace();}}}}
0 0
- java 多线程下载
- java 多线程断点下载
- Java多线程下载
- java多线程下载
- java多线程下载
- Java多线程下载
- java多线程下载
- Java多线程下载
- java多线程下载程序
- Java多线程下载文件
- java多线程下载文件
- java实现多线程下载
- Java多线程下载
- Java多线程下载文件
- java多线程下载
- Java多线程下载文件
- Java多线程下载文件
- Java多线程下载代码
- <蓝桥杯>vip题库之阶乘计算(C++版)
- 优质游戏开发有什么标准?
- JSP+Servlet培训班作业管理系统[5]-加载角色对应菜单
- C#计时器
- 【python】The first PyQt4 code
- java多线程下载
- JSP+Servlet培训班作业管理系统[6]-人员管理功能实现
- 鸟哥的linux私房菜学习笔记《八》环境变量$PATH
- eclipse 开发遇见的问题1
- 疯狂的采药(完全背包)
- 组件的ID、事件监听器、 按钮点击效果
- ES6——Day1(块级作用域)
- 最佳浏览路线
- 2017-03-04 set—难解的集合