用java的URL实现了一个简单的断点续传的列子,不为别的,假如你对断点续传不了解一看就明白了呵呵,算不上高深啊
package test;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
/* @className:TestDown.java
* @classDescription: 简单的java断点续传
* @author:jiangmianyue
* @createTime:2011-11-29
*/
public class TestDown {
public static void main(String[] args) {
URL url = null;
try {
url = new URL("http://172.16.1.33/newfile/e358beb5367341929614332e1a390dfb.apk");
} catch (MalformedURLException e) {
e.printStackTrace();
}
URLConnection httpConnection = null;
try {
// 建立连接
httpConnection = url.openConnection();
} catch (IOException e) {
e.printStackTrace();
}
// 设置ua
httpConnection.setRequestProperty("User-Agent","NetFox");
// 设置断点续传的开始位置 从100k开始
httpConnection.setRequestProperty("RANGE","bytes=102400-");
// 获得输入流
InputStream input = null;
try {
input = httpConnection.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
// 可以从多少字节开始写的文件类
RandomAccessFile oSavedFile = null;
try {
oSavedFile = new RandomAccessFile("d://down.apk","rw");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 从第100K开始写
long nPos = 102400;
// 定位文件指针到 nPos 位置
try {
// 文件指针移动到那个位置
oSavedFile.seek(nPos);
} catch (IOException e) {
e.printStackTrace();
}
byte[] b = new byte[1024];
int nRead;
// 从输入流中读入字节流,然后写到文件中
try {
// int n =0;
while((nRead=input.read(b,0,1024)) > 0)
{
oSavedFile.write(b,0,nRead);
/**
* 第一次的时设置n的值到100的时候断开
* if(100 == n){
* break;
* }
*/
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 下面是一些请求头信息可以根据需要添加
private static void setHeader(URLConnection con) {
con.setRequestProperty("User-Agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3");
con.setRequestProperty("Accept-Language", "en-us,en;q=0.7,zh-cn;q=0.3");
con.setRequestProperty("Accept-Encoding", "aa");
con.setRequestProperty("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
con.setRequestProperty("Keep-Alive", "300");
con.setRequestProperty("Connection", "keep-alive");
con.setRequestProperty("If-Modified-Since", "Fri, 02 Jan 2009 17:00:05 GMT");
con.setRequestProperty("If-None-Match", "\"1261d8-4290-df64d224\"");
con.setRequestProperty("Cache-Control", "max-age=0");
con.setRequestProperty("Referer", "http://www.dianping.com");
}
}
分享到:
相关推荐
Java实现断点续传是一项在文件传输中非常实用的技术,特别是在大文件传输或者网络不稳定的情况下。断点续传允许用户在文件传输中断后从上次中断的位置继续,而不是重新开始整个传输过程,极大地提高了效率和用户体验...
### 用Java实现断点续传的技术解析 #### 一、技术原理概述 断点续传是一种在网络连接不稳定或在下载过程中出现意外中断时能够继续完成下载的技术。它通过记录下载过程中断时的位置,当重新启动下载任务时,可以从...
Java实现断点续传程序是一项在文件传输领域中常见的技术,尤其在大文件下载或上传时,能够提高效率并提供良好的用户体验。以下是关于这个主题的详细讲解。 **断点续传的原理** 断点续传的基本思想是允许用户在文件...
【Java实现断点续传的关键几点】 1. **文件分块**:将大文件分成若干个小块进行传输,这样可以根据每块的完成情况来决定是否需要重新下载。 2. **状态记录**:在下载过程中,记录下每个文件块的下载进度,包括已...
### Java实现断点续传的关键几点 1. 客户端在发送请求时设置Range头,指定需要下载的文件的起始字节位置。 2. 服务器端需要检查请求头中的Range字段,确定要返回的文件范围,并在响应头中设置Content-Range字段。 3...
用apache的FTP实现断点续传 - janestone的专栏 - 博客频道 - CSDN.NET (2012年5月21日) java实现FTP多线程断点续传,上传下载! - java学习与交流 - j2ee学习网 - j2ee学习网 (2012年5月21日) 用 Java 实现断点续传 ...
java实现断点续传 private void setHeader(URLConnection con) { con .setRequestProperty( "User-Agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 ...
### Java实现断点续传的关键技术点 #### 1. 使用`HttpURLConnection`发送`RANGE`请求头 为了实现断点续传功能,客户端需要告诉服务器它希望从哪个位置开始下载文件。这是通过向服务器发送一个带有特殊`RANGE`请求...
Java作为一款广泛使用的编程语言,也提供了实现断点续传的能力。本篇文章将深入探讨如何用Java实现HTTP协议下的断点续传功能。 断点续传主要涉及两个关键部分:客户端和服务器端。客户端负责保存已下载的数据状态,...
Java实现断点续传主要涉及以下几个关键步骤: 1. **检测本地文件状态**:首先,程序需要检查本地是否有部分已下载的文件,以及当前文件的大小。如果存在部分文件,记录其长度作为续传的起点。 2. **构建Range请求*...
本项目是一个基于Vue和Java的断点续传与大文件上传系统设计源码,共包含563个文件,其中包括258个Java文件、82个SVG文件等。系统采用了Vue-uploader和若依框架,为用户提供了一个便捷的文件上传解决方案。系统支持多...
下面将详细阐述Java实现断点续传上传的关键技术和步骤。 一、理解断点续传原理 断点续传的基本思想是保存已上传部分的信息,包括已上传的文件大小和最后的偏移位置。当上传中断后,服务器和客户端都保存这个信息,...
下面我们将深入探讨Java实现断点续传的原理和关键点。 1. **断点续传的原理**: 断点续传的核心在于保存已下载部分的信息,通常包括已下载的文件大小、最后的偏移位置等。当下载中断后,系统会记录当前的下载状态...