直接贴出代码
/************************************************************************ Module: DownloadConnection.java* Author: Administrator* Purpose: Defines the Class DownloadConnection***********************************************************************/package com.tiny.httpdemo;import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;import lan.Log;/*** 这个下载连接类主要采用的方式是 将文件大小进行分块然后 并且有序下载 * 主要的目的是为了让一次下载的数量不要过于的大 以避免io阻塞* 若要实现断点续传本程序的改进应该是很方便的 * 记住lastSize 既可以立马进行分解* @author sada**/
public class DownloadConnection {// private static final String mtempurl = "http://219.138.125.22/myweb/mp3/CMP3/JH19.MP3";private static final String mtempurl = "http://file16.top100.cn/201105110911/AA5CC27CBE34DEB50A194581D1300881/Special_323149/%E8%8D%B7%E5%A1%98%E6%9C%88%E8%89%B2.mp3";public static void main(String[] args) {DownloadConnection dConnection = new DownloadConnection(mtempurl, 0);dConnection.download(mtempurl);}/** TAG */private static final String TAG = "Sada.DownloadConnection";/** 用于操作下载暂停,写本地文件时候跳出写循环的标志 */private boolean stop;/** 下载的文件的总长度 */private int totalSize;/** 如果是继续下载,lastSize表示上次已经下载的长度 */private int lastSize;/** 當前下載數據塊已下載數據大小,该变量会在写循环中增加*/private int currSize;/** 当前需要下载的文件大小,用于继续下载时,写循环的结束标志 */private int contentLength;/** 最大塊大小1MB */private static final int MAX_SIZE_ONE_MEGA = 1024 * 1024;private int lastloadsize = 0; //已传的偏移private int currloadsize = 0; //还要传得偏移private int