`

断点续传

 
阅读更多
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
分享到:
评论

相关推荐

    基于c#的webapi断点续传几种方式及webclient断点续传下载.zip

    本资料包“基于C#的WebAPI断点续传几种方式及WebClient断点续传下载.zip”主要探讨了两种在C#环境下实现断点续传的方法:一是通过WebAPI实现服务端的断点续传功能,二是使用WebClient类进行客户端的断点续传下载。...

    fastDFS断点续传实例

    **FastDFS断点续传实例详解** FastDFS是一款开源的高性能、轻量级的分布式文件系统,主要用于解决海量数据存储和负载均衡的问题。在实际应用中,文件上传和下载是常见的操作,尤其是大文件,断点续传功能就显得尤为...

    局域网断点续传工具

    局域网断点续传工具是一种专为解决在局域网环境下进行大文件传输时遇到的问题而设计的应用软件。在不稳定的网络环境中,比如无线局域网,由于信号波动、网络中断等因素,大文件的复制过程可能会频繁中断,导致用户...

    fastdfs断点续传代码

    在IT行业中,断点续传是一项非常实用的技术,特别是在大文件传输时,它允许用户中断传输后从上次中断的位置继续,极大地提高了效率和用户体验。FastDFS是一个轻量级的分布式文件系统,它专为互联网设计,能有效地...

    c/c++线程断点续传实现

    在C/C++编程中,实现线程断点续传是一项技术挑战,特别是在处理大文件下载时,这种功能显得尤为重要。断点续传允许程序在中断后从上次停止的地方继续下载,提高了用户体验并节省了网络资源。Cocos2dx是一个基于C++的...

    Java实现断点续传

    Java实现断点续传是一项在文件传输中非常实用的技术,特别是在大文件传输或者网络不稳定的情况下。断点续传允许用户在文件传输中断后从上次中断的位置继续,而不是重新开始整个传输过程,极大地提高了效率和用户体验...

    多线程下载支持断点续传

    在IT领域,多线程下载和断点续传是提高下载效率和用户体验的重要技术。这里,我们将深入探讨这两个概念,并结合使用HttpURLConnection实现的多线程下载工具进行讲解。 首先,多线程下载是一种利用网络资源的方式,...

    QT学习之文件传输和断点续传

    在这个"QT学习之文件传输和断点续传"的主题中,我们将深入探讨如何在QT环境中实现基于TCP的文件传输功能,并且特别关注断点续传技术。 首先,让我们了解TCP(Transmission Control Protocol)协议。TCP是一种面向...

    基于Java的FastDFS大文件上传与断点续传设计源码

    本源码项目是基于Java的FastDFS大文件上传与断点续传设计,包含36个文件,主要使用Java、JavaScript和CSS编程语言。该项目旨在实现h5与fastdfs之间的高性能断点续传、秒传、大文件上传以及使用redis文件锁。系统提供...

    spring boot实现大文件断点续传

    在这个场景下,结合Google的断点续传框架,我们可以实现大文件的高效、安全上传,即使在上传过程中网络中断,也能从上次中断的位置继续,而无需重新开始。以下是对这个知识点的详细解释。 首先,了解断点续传的基本...

    Http断点续传原理及flex实现技术

    ##### 1.2 非断点续传与断点续传的区别 为了更清楚地理解断点续传的工作方式,我们可以通过对比非断点续传和断点续传的HTTP请求来进一步分析: - **非断点续传** - **请求示例**:当浏览器请求下载文件时,通常...

    java断点续传,刚刚整理出来多线程处理

    Java 断点续传技术是网络传输中常用的一种机制,特别是在大文件下载或上传时,如果因为网络中断或其他原因导致传输失败,可以借助断点续传功能从上次中断的地方继续,而无需重新开始。在Java中实现断点续传,通常...

    实现安卓文件断点续传

    在安卓平台上实现文件的断点续传功能是提高用户体验和优化网络资源利用的重要技术。断点续传允许用户在文件下载中断后,如因网络不稳定或设备意外关机,能够从上次停止的地方继续下载,而不需要重新开始。下面将详细...

    断点续传源码

    断点续传源码,如果想研究java断点续传技术的小伙伴,可下载去研究一下

    curl断点续传

    `curl`断点续传功能是它的一个重要特性,尤其对于处理大文件下载时非常有用。当下载过程中由于网络问题或其他原因中断,可以利用断点续传来继续未完成的下载,而无需重新开始。 断点续传原理是通过记录已下载部分的...

    Qt5 QFtp普通文件断点续传

    1 自动文件上传(断点续传) 需要在上传文件之前调用QFtp下的list 通过listInfor 信号 获取当前要上传的文件是否存在 如果存在 比较大小 或者通过计算MD5值 比较文件的完整性 然后确定是否需要断点续传 或者覆盖 ...

    FTP上传(断点续传)更新进度条

    FTP上传和断点续传是网络传输中两个重要的概念,特别是在大文件传输场景下,而更新进度条则是提升用户体验的关键元素。在这个公司项目的第一个版本中,我们关注的是如何实现一个功能完善的FTP上传系统,该系统支持...

    基于go的大文件切片上传、断点续传、秒传.zip

    基于go的大文件切片上传、断点续传、秒传.zip 1、如何唯一标示一个文件? 文件的信息后端会存储在mysql数据库表中。 在上传之前,前端通过 spark-md5.js 计算文件的md5值以此去唯一的标示一个文件。 spark-md5.js ...

    【ASP.NET编程知识】.NET或.NET Core Web APi基于tus协议实现断点续传的示例.docx

    .NET 或.NET Core Web API基于tus 协议实现断点续传的示例 本文档提供了一个基于tus 协议的断点续传示例,使用.NET 或.NET Core Web API 实现大文件分片上传。该示例使用 tusdotnet 方案,提供了一个基本的 demo,...

    基于Vue和Java的断点续传与大文件上传系统设计源码

    本项目是一个基于Vue和Java的断点续传与大文件上传系统设计源码,共包含563个文件,其中包括258个Java文件、82个SVG文件等。系统采用了Vue-uploader和若依框架,为用户提供了一个便捷的文件上传解决方案。系统支持多...

Global site tag (gtag.js) - Google Analytics