package com.log4e.union;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;
import org.junit.Test;
public class Download {
/**
*
* @param sURL 文件地址
* @param nPos 文件指针位置
* @param savePath 下载保存路径
* @throws IOException
*/
boolean stop = false;
public void down(String sURL,long nPos,String savePath) throws IOException{
URL url = new URL(sURL);
HttpURLConnection httpConnection = (HttpURLConnection) url
.openConnection();
httpConnection.setConnectTimeout(5000000);
httpConnection.setRequestProperty("User-Agent", "NetFox");
String sProperty = "bytes=" + nPos + "-";
// nStartPos 字节开始传,前面的字节不用传了
httpConnection.setRequestProperty("RANGE", sProperty);
Utility.log(sProperty);
InputStream input = httpConnection.getInputStream();
byte[] b = new byte[1024*10];
//"rw" 读写方式打开文件
RandomAccessFile oSaveFile = new RandomAccessFile(savePath, "rw");
//seek()方法来访问记录,并进行读写
oSaveFile.seek(nPos);
int result = -1;
System.out.println("下载中....");
while((result = input.read(b))!=-1){
oSaveFile.write(b, 0, result);
}
System.out.println("下载完成....");
httpConnection.disconnect();
}
//获得文件长度
public long getFileSizeByUrl(String url) throws Exception{
URL u = new URL(url);
HttpURLConnection httpURLConnection = (HttpURLConnection) u.openConnection();
long length = httpURLConnection.getContentLength();
httpURLConnection.disconnect();
return length;
}
//
@Test
public void testDownLoad(){
String url = "http://ww4.sinaimg.cn/bmiddle/769c42dcjw1dojdmycmu9g.gif";
String savePath = "F:\\download";
String fileName = url.substring(url.lastIndexOf("/"));
File file = new File(savePath + fileName);
try {
long serverFileLength = getFileSizeByUrl(url);
System.out.println("serverFileLength : "+serverFileLength );
if (file.exists()) {
if(file.length()<serverFileLength){
down(url, file.length(), file.getPath());
}
}else{
file.createNewFile();
if(file.length()<serverFileLength){
down(url, file.length(), file.getPath());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
- 大小: 4.6 KB
分享到:
相关推荐
断点续传源码,如果想研究java断点续传技术的小伙伴,可下载去研究一下
用apache的FTP实现断点续传 - janestone的专栏 - 博客频道 - CSDN.NET (2012年5月21日) java实现FTP多线程断点续传,上传下载! - java学习与交流 - j2ee学习网 - j2ee学习网 (2012年5月21日) 用 Java 实现断点续传 ...
fastDFS断点续传的一个小Demo,用maven构建的项目。之前在网上找了好久关于断点续传的实例,没有找到,特意分享出来了。
这是一个用C#编写的大文件上传控件,支持断点续传,包括了控件源码和ASP.NET下的调用实例,上传文件的大孝客户端的唯一身份标识、上传类型(0:断点续传, 1:truncate,重新上传,2:上传,如果该文件已存在,则报403...
局域网断点续传工具 在局域网不稳定(无线网)时,复制大的共享文件容易断线,这样还得从新复制,很烦人。用这个工具可以搜索局域网中的共享文件,并且可以断点续传共享文件。
使用spring boot整合google的断点续传框架事项大文件断点续传功能
WPF实现断点续传下载,C#实现断点续传下载。支持断网、杀进程、重启下载客户端。
实现文件的断点续传功能,进行文件的双方面下载功能,实现文件的断点续传功能,简单明了
curl断点续传,下载exe完成打开exe
用 Java 实现断点续传 (HTTP),内容有: 断点续传的原理, Java 实现断点续传的关键几点, 断点续传内核的实现等。
对于开发人员来说,有了这些信息,断点续传功能将会变的和普通的文件上传功能一样简单。 相信新颖网络HTTP断点续传控件能够帮助您赢利市场。 产品介绍:[url=...
找了很久的断点续传功能。之前也试过百度的webuploader,但是效果并不理想(想研究的也可以试试),然后一直找,找了很久,直到找到这个后,才基本满足功能所需,可以实现大文件断点续传的需求。大文件断点续传的...
C# 大文件下载 断点续传 类似迅雷的下载,可以自行实现多线程下载、任务导入导出、等功能
在QT上开发的文件传输工具,利用TCP实现文件传输,支持断点续传操作。
使用.NET实现断点续传 实例 希望大家仔细的看一下
java实现FTP多线程断点续传
本资源包含了断点续传功能的完整实现,包括客户端和服务端。服务端主要是实现支持断点续传,客户端其实就是一个下载器。
HTTP断点续传原理,另附上AS3+Flash Player+AIR制作的一个断点续传小程序源码
unity最新支持断点续传的方便,代码简单易懂。demo版本unity2021,参考文章:https://blog.csdn.net/chunyu90225/article/details/118545989
使用HttpURLConnection写的一个多线程下载工具,支持断点续传