java多线程下载
2017-03-04 11:48
162 查看
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; } @Override public 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(); } } } }
相关文章推荐
- java下的Http多线程下载与断点续传分析【转自酷勤网】
- 用java实现ftp的多线程下载
- 使用java实现http多线程下载
- java多线程下载工具(三)
- Java多线程下载
- Java多线程下载工具(四)
- 多线程下载,拷贝文件java代码
- java多线程下载
- java多线程下载工具(二)
- 用java实现简单的多线程下载
- 使用java实现http多线程下载
- Java实现多线程下载、断点续传
- java多线程下载和断点续传
- java实现http多线程下载
- Java多线程下载并具断点续传功能JAR
- Java多线程下载
- java多线程下载
- Java多线程下载
- java实现多线程下载
- java 实现多线程下载(1)