package com.itheima.multiThreadDownload;
//import java.net.MalformedURLException;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;
//import java.net.URLConnection; public class MultiThreadDownload {
private static String path = "http://127.0.0.1:8080/FeiQ.exe";
private static int threadCount= 3;//不搞那么多就搞三个线程.
public static void main(String[] args) {
//①联网获取要下载的文件长度
try {
URL url = new URL(path);
//URLConnection openConnection = url.openConnection();
HttpURLConnection openConnection = (HttpURLConnection) url.openConnection();
openConnection.setRequestMethod("GET");
openConnection.setConnectTimeout(10000);
int responseCode = openConnection.getResponseCode();
if(responseCode==200){
//获取要下载的文件长度
//int contentLength = openConnection.getContentLength();
//long contentLengthLong = openConnection.getContentLengthLong();
int contentLength = openConnection.getContentLength();
//在本地创建一个一样的文件
RandomAccessFile file = new RandomAccessFile(getFilename(path), "rw");//第一个叫file或者说是name(路径),第二个参数叫mode
//名字可以通过路径去获取,截取这个路径最后一个斜杠.剩下的这个就是我要下载的文件名
//file.setLength(contentLengthLong);//文件创建出来之后去设置文件的长度
file.setLength(contentLength);//文件创建出来之后去设置文件的长度
//计算每一个线程要下载多少数据
//int blockSize = contentLengthLong/threadCount;
int blockSize = contentLength/threadCount;
//计算每一个线程要下载的数据范围
for (int i = 0; i < threadCount; i++) {
//用i和blockSize来确定startIndex和endIndex
int startIndex = i*blockSize;
int endIndex = (i+1)*blockSize-1;
if(i==threadCount-1){
//说明是最后一个线程
endIndex = contentLength-1;
}
}
}
} //catch (MalformedURLException e) {
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static String getFilename(String path) {
String[] split = path.split("/");//拿斜杠去切 return split[split.length-1];
}
}

接下来得创建多个线程,在多线程里面去创建不同的数据。

09_多线程下载_获取文件长度&计算下载范围的更多相关文章

  1. java 多线程下载文件并实时计算下载百分比(断点续传)

    多线程下载文件 多线程同时下载文件即:在同一时间内通过多个线程对同一个请求地址发起多个请求,将需要下载的数据分割成多个部分,同时下载,每个线程只负责下载其中的一部分,最后将每一个线程下载的部分组装起来 ...

  2. 【Java EE 学习 22 下】【单线程下载】【单线程断点下载】【多线程下载】

    一.文件下载简述 1.使用浏览器从网页上下载文件,Servlet需要增加一些响应头信息 (1)response.setContentType("application/force-downl ...

  3. Head_First_Python(中文版)完整版PDF免费下载_百度云盘

    Head_First_Python(中文版)完整版PDF免费下载_百度云盘 提取码:bjbg 本书特色 根据认知科学和学习理论的最新研究成果,这本书采用一种适合大脑的丰富格式娓娓道来,而不是长篇累牍地 ...

  4. Python学习手册(第4版) - 专业程序员的养成完整版PDF免费下载_百度云盘

    Python学习手册(第4版) - 专业程序员的养成完整版PDF免费下载_百度云盘 提取码:g7v1 作者简介 作为全球Python培训界的领军人物,<Python学习手册:第4版>作者M ...

  5. 笨办法学python - 专业程序员的养成完整版PDF免费下载_百度云盘

    笨办法学python - 专业程序员的养成完整版PDF免费下载_百度云盘 提取码:xaln  怎样阅读本书 由于本书结构独特,你必须在学习时遵守几条规则 录入所有代码,禁止复制粘贴 一字不差地录入代码 ...

  6. 【XPath Helper:chrome爬虫网页解析工具 Chrome插件】XPath Helper:chrome爬虫网页解析工具 Chrome插件下载_教程_安装 - 开发者插件 - Chrome插件网

    [XPath Helper:chrome爬虫网页解析工具 Chrome插件]XPath Helper:chrome爬虫网页解析工具 Chrome插件下载_教程_安装 - 开发者插件 - Chrome插 ...

  7. Python编程快速上手 让繁琐工作自动化 - 专业程序员的养成完整版PDF免费下载_百度云盘

    Python编程快速上手  让繁琐工作自动化 - 专业程序员的养成完整版PDF免费下载_百度云盘 提取码:7qm4 有关本书 累计销售超过10万册 零基础编程者的不二之选 基于Python3编写 通用 ...

  8. b站视频_下载_去水印_视频转mp4-批量下载神器

    b站下载_视频_去水印_转mp4_批量下载的解决办法 以下问题均可解决 b站下载的视频如何保存到本地 b站下载的视频在那个文件夹里 b站下载视频转mp4 b站下载app b站下载在哪 b站下载视频电脑 ...

  9. [iOS 多线程 & 网络 - 2.10] - ASI框架下载文件

    A.ASI框架中的下载 1.实现步骤 在实际的开发中如果要使用asi框架来下载服务器上的文件,只需要执行下面简单的几个步骤即可. (1)创建请求对象:(2)设置下载文件保存的路径:(3)发送下载文件的 ...

随机推荐

  1. SQL SELECT TOP, LIMIT, ROWNUM 子句

    SQL SELECT TOP, LIMIT, ROWNUM 子句 SQL SELECT TOP 子句 SELECT TOP 子句用于规定要返回的记录的数目. SELECT TOP 子句对于拥有数千条记 ...

  2. 机房收费系统(VB.NET)个人版总结

    重构版个人机房收费系统大概从暑假开学開始进行.花了不到一个半月的时间才完毕.以下对我在重构过程中的一写理解. 1.系统设计一个非常重要的目的就是重用.而要做到重用,低耦合是最有效的手段回想一下我们C/ ...

  3. PJzhang:python基础入门的7个疗程-two

    猫宁!!! 参考链接:易灵微课-21天轻松掌握零基础python入门必修课-售价29元人民币 https://www.liaoxuefeng.com/wiki/1016959663602400 htt ...

  4. 【手记】走近科学之为什么JObject不能调用LINQ扩展方法

    Json.NET的JObject明明实现了IEnumerable<T>,具体来说是IEnumerable<KeyValuePair<string, JToken>> ...

  5. Androidclient验证Licence的原理

    需求 限制App的使用,使App仅仅能在有许可的设备上执行. 分析及解决方式 原理 让App在每次执行的时候都连接server进行合法性验证--当然是一个非常成熟可靠的方案. 可是这样做的局限也是每次 ...

  6. Qt、C++ 简易计算器

    Qt.C++实现简易计算器: 以下内容是我实现这个简易计算器整个过程,其中包括我对如何实现这个功能的思考.中途遇到的问题.走过的弯路 整个实现从易到难,计算器功能从简单到复杂,最开始设计的整个实现步骤 ...

  7. asp.net+access实现DropDownList与RadDatePicker同步筛选

    这里没有使用SqlServer是因为老师要求使用access. 前台代码 <table style="margin:auto"> <tr><td cl ...

  8. A toolbox to build your own build server

    A toolbox to build your own build server LambdaCD - Build Pipelines as Code https://www.lambda.cd/ A ...

  9. poj 3585 Accumulation Degree(二次扫描和换根法)

    Accumulation Degree 大致题意:有一棵流量树,它的每一条边都有一个正流量,树上所有度数为一的节点都是出口,相应的树上每一个节点都有一个权值,它表示从这个节点向其他出口可以输送的最大总 ...

  10. luogu3379 【模板】最近公共祖先(LCA) 倍增法

    题目大意:给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 整体步骤:1.使两个点深度相同:2.使两个点相同. 这两个步骤都可用倍增法进行优化.定义每个节点的Elder[i]为该节点的2^k( ...