Java版断点续传
来源:互联网 发布:商场收租软件 编辑:程序博客网 时间:2024/06/05 16:29
功能:可以下载软件,可以下载未完成的软件
如果软件存在,则改名下载,不进行覆盖,以免勿删文件
代码如下:
如果软件存在,则改名下载,不进行覆盖,以免勿删文件
代码如下:
import java.io.File;import java.io.IOException;import java.io.InputStream;import java.io.RandomAccessFile;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;//断点续传public class DownLoad { public static void down(String URL, long nPos, String savePathAndFile) { try { URL url = new URL(URL); HttpURLConnection httpConnection = (HttpURLConnection) url .openConnection(); // 设置User-Agent httpConnection.setRequestProperty("User-Agent", "NetFox"); // 设置断点续传的开始位置 httpConnection.setRequestProperty("RANGE", "bytes=" + nPos); // 获得输入流 InputStream input = httpConnection.getInputStream(); RandomAccessFile oSavedFile = new RandomAccessFile(savePathAndFile, "rw"); // 定位文件指针到nPos位置 oSavedFile.seek(nPos); byte[] b = new byte[1024]; int nRead; // 从输入流中读入字节流,然后写到文件中 while ((nRead = input.read(b, 0, 1024)) > 0) { (oSavedFile).write(b, 0, nRead); } httpConnection.disconnect(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static long getRemoteFileSize(String url) { long size = 0; try { HttpURLConnection conn = (HttpURLConnection) (new URL(url)) .openConnection(); size = conn.getContentLength(); conn.disconnect(); } catch (Exception e) { e.printStackTrace(); } return size; }public static void main(String[] args) { String url = "http://www.videosource.cgogo.com/media/0/16/8678/8678.flv"; String savePath = "F:\\"; String fileName = url.substring(url.lastIndexOf("/")); String fileNam=fileName; HttpURLConnection conn = null; try { conn = (HttpURLConnection) (new URL(url)).openConnection(); } catch (Exception e) { e.printStackTrace(); } File file = new File(savePath + fileName); // 获得远程文件大小 long remoteFileSize = getRemoteFileSize(url); System.out.println("远程文件大小="+remoteFileSize); int i = 0; if (file.exists()) { // 先看看是否是完整的,完整,换名字,跳出循环,不完整,继续下载 long localFileSize = file.length(); System.out.println("已有文件大小为:"+localFileSize); if (localFileSize < remoteFileSize) { System.out.println("文件续传"); down(url, localFileSize, savePath + fileName); }else{ System.out.println("文件存在,重新下载"); do{ i++; fileName = fileNam.substring(0, fileNam.indexOf(".")) + "(" + i + ")" + fileNam.substring(fileNam.indexOf(".")); file = new File(savePath + fileName); }while(file.exists()); try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } down(url, 0, savePath + fileName); } // 下面表示文件存在,改名字 } else { try { file.createNewFile(); System.out.println("下载中"); down(url, 0, savePath + fileName); } catch (IOException e) { e.printStackTrace(); } } }}
- 断点续传 JAVA版
- Java版断点续传
- 断点续传 Java版(原)
- java断点续传
- Java 断点续传
- Java断点续传
- java断点续传
- java断点续传
- java 断点续传
- Java断点续传
- JAVA断点续传
- java断点续传
- java断点续传
- Java:断点续传
- Java断点续传
- java断点续传
- Java 断点续传
- 用Java实现断点续传
- 冒泡排序
- Java转换全角半角
- 数据结构算法书籍推荐
- C语言volatile关键字的用法
- ADO--如何导入导出数据
- Java版断点续传
- 用选择法对10个整数排序。
- GCC 环境变量
- ios 导航栏显示
- Java专题(二)之GUI-AWT详解
- 编译时,头文件和库的搜索路径
- 求一个3*3矩阵对角线元素之和。
- SqlHelper
- 有一个已经排好序的数组,今输入一个数,要求按原来排序的规律将他插入数组中。