java之大文件断点续传
针对某些场景下,面对服务文件大,或者服务端服务器不稳定时使用该模块。功能代码如下:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL; public class MultiFileDownLoad {
private static int position = 0;
public static void doDownLoad(String url){
File targetFile=new File(MultiFileDownLoad.class.getResource("").getFile());
targetFile=targetFile.getParentFile();
targetFile=targetFile.getParentFile();
targetFile=targetFile.getParentFile();
targetFile=targetFile.getParentFile();
targetFile=new File(targetFile.getAbsolutePath()+File.separator+ System.currentTimeMillis()+".wmv");
if(!targetFile.exists()){
try {
targetFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
//File targetFile=new File("D://video.wmv");
writeFile(url,targetFile); }
private static InputStream getInputStream(String url,long startPosition){
InputStream inputStream=null;
HttpURLConnection conn=null;
try {
URL filePath=new URL(url);
conn= (HttpURLConnection) filePath.openConnection();
conn.setConnectTimeout(3*1000);
//防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
long contentLength=conn.getContentLengthLong(); if(startPosition<contentLength){
// 设置断点续传的开始位置
conn.disconnect();
conn=(HttpURLConnection) filePath.openConnection();
conn.setConnectTimeout(3*1000);
//防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
conn.setRequestProperty("RANGE","bytes="+startPosition);
contentLength=conn.getContentLengthLong();
System.out.println(contentLength);
inputStream = conn.getInputStream();
}else {
return null;
}
}catch (Exception e){
e.printStackTrace();
}/*finally {
conn.disconnect();
}*/
return inputStream;
}
private static void writeFile(String url,File targetFile){
// 数据读写
byte[] buffer = new byte[1024*1024];
int bytesWritten = 0;
int byteCount = 0;
InputStream inputStream =null;
FileOutputStream fos=null;
long fileLength=0;
try {
fos=new FileOutputStream(targetFile,true);
fileLength=targetFile.length();
inputStream = getInputStream(url,fileLength);
while ((byteCount = inputStream.read(buffer)) != -1) {
fos.write(buffer, bytesWritten, byteCount);
}
}catch (Exception e){
//e.printStackTrace();
try {
inputStream.close();
fos.close();
} catch (IOException e1) {
e1.printStackTrace();
}
writeFile(url,targetFile);
} }
public static void main(String[] args) {
String filepath = "http://10.84.0.6:2880/fmsdrive%2Fvideo%2F%2Fnews%2F2017%2F10%2F10%D4%C28%C8%D5%D3%CD%CC%EF%B9%E3%BD%C7.wmv";
doDownLoad(filepath);
}
}
java之大文件断点续传的更多相关文章
- java+下载+大文件断点续传
java两台服务器之间,大文件上传(续传),采用了Socket通信机制以及JavaIO流两个技术点,具体思路如下: 实现思路:1.服:利用ServerSocket搭建服务器,开启相应端口,进行长连接操 ...
- java解决大文件断点续传
第一点:Java代码实现文件上传 FormFile file = manform.getFile(); String newfileName = null; String newpathname = ...
- java http大文件断点续传上传
因为需要研究下断点上传的问题.找了很久终于找到一个比较好的项目. 效果: 上传中,显示进度,时间,百分比. 点击[Pause]暂停,点击[Resume]继续. 2,代码分析 项目进行了封装使用最简单的 ...
- java+大文件断点续传
用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 (本文提供全部源码下载,请访问 https://github.com/1269085759/up6-jsp-mysq ...
- iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载+使用输出流代替文件句柄
前言:本篇讲解,在前篇iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载的基础上,使用输出流代替文件句柄实现大文件断点续传. 在实际开发中,输入输出流用的比较少,但 ...
- 【原创】用JAVA实现大文件上传及显示进度信息
用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 (本文提供全部源码下载,请访问 https://github.com/grayprince/UploadBigFil ...
- HTML5 大文件断点续传完整思路整理
需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...
- B/S大文件断点续传
一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传:支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输. ...
- java filechannel大文件的读写
java读取大文件 超大文件的几种方法 转自:http://wgslucky.blog.163.com/blog/static/97562532201332324639689/ java 读取一个 ...
随机推荐
- 执行AJAX返回HTML片段中的JavaScript脚本
如果AJAX加载的数据是一个HTML片段,而且这个HTML片段还包含脚本<script>块,那么在你把这数据xmlHttp.responseText用innerHTML方法插入到当前文档一 ...
- AngularJS 中ng-model通过$watch动态取值
这个例子的意思是,当xxxx的长度不超过6时,xxxx和yyyy两个input的model是无关的,但当xxxx超过6,则yyyy会跟随其值而变化. 另一种做法是在input的ng-model后面添加 ...
- 给json格式化的一个小工具
var glob = require("glob") // options is optional var fs=require("fs") glob(&quo ...
- C++ GUI Qt4编程(05)-2.2GoToCell
1. 使用Qt设计师创建GoToCell对话框. 2. gotocelldialog.cpp #include <QRegExp> #include "gotocelldialo ...
- PIE SDK栅格拉伸渲染
1. 功能简介 栅格数据拉伸渲染是对指定的波段进行图像拉伸,并设置拉伸之后的颜色带,根据像元值和颜色带进行数据渲染. 2. 功能实现说明 2.1. 实现思路及原理说明 第一步 实例化拉伸渲染对象示例 ...
- linux 登陆失败处理
1.备份要操作的两个配置文件 cp /etc/pam.d/sshd /etc/pam.d/sshd.bak cp /etc/pam.d/login /etc/pam.d/login.bak 2.检查是 ...
- Missing artifact com.oracle:ojdbc6:jar:11.2.0.1.0问题解决 ojdbc包pom.xml出错
<!-- 添加oracle jdbc driver --> <dependency> <groupId>com.oracle</groupId> < ...
- keepalived+lvs简单实现
一,部署实战环节 01,服务架构图: 服务器镜像为centos6.9 02,服务安装: 10.0.0.10: 下载keeplived官方包--> http://www.keepalived. ...
- pycharm + git实现两台电脑代码同步
说明:此篇文章是作者方便日后查阅所有,请不要按本文的方法搭建 1.下载msysygit,https://git-for-windows.github.io/ 点击download获取下载链接,可能由于 ...
- 解决dns服务器未找到问题 &&DNS解析服务器&&连接问题
第一部分: 有时已经连接到了网络,但是却提示未找到dns服务器,或未连接dns服务器,这多是因为dns设置的问题.下面是几种可行的解决方法. 方法一: 1. win + R -> cmd - ...