支持通配符的多线程文件下载

支持通配符的多线程文件下载
用各种网络下载工具下文件的时候,大多数下载软件支持添加批量下载任务的功能,闲暇之余coding了一个简单的程序,实现批量下载.
分了三个类
RegFiles.java主要实现通配符文件地址的构造,提供了一些辅助方法,方便的添加需要下载的URL
URLFileSaver.java 实现将URL指向的文件保存到本地的功能
FileDownLoader.java 创建多个线程下载

大家看code,欢迎提出重构意见
package  cn.heapstack.study;

import  java.util.ArrayList;
import  java.util.List;

/** */ /**
 * <p>
 * Title:通配符下载地址构建类
 * </p>
 * <p>
 * Description: 1.0版本支持通配符(*)匹配的URL字符串,该匹配配合通配符长度一起使用<P>
 * Example:如果要下载的URL格式为http://www.abc.com/abc(*).zip;
 * (*)代表要匹配的数字,
 * (*)支持10的通配符长度次方个数字,不足的长度位前面补0
 * 
 * 当通配符长度为1,匹配的下标可以是0-9,这时要下载的URL格式就是 
http://www.abc.com/abc0.zip
 * 
http://www.abc.com/abc1.zip  http://www.abc.com/abc8.zip
 * 
http://www.abc.com/abc9.zip
 * 
 * 当通配符长度为3,匹配的下标可以是000-999,这时要下载的URL格式就是 
http://www.abc.com/abc000.zip
 * 
http://www.abc.com/abc001.zip  http://www.abc.com/abc099.zip 
 * 
http://www.abc.com/abc999.zip
 * </p>
 * <p>
 * Copyright: Copyright (c) www.heapstack.cn 2006
 * </p>
 * 
 * 
@author jht
 * 
@version 1.0
 
*/

public   class  RegFiles  {
    
private List<String> fileList = new ArrayList<String>();

    
private String regURL;

    
private int length;

    
private int from;

    
private int to;

    
/** *//**
     * 
     * 
@param regURL 带通配符(*)的下载文件地址
     * 
@param length 通配符长度
     * 
@param from 起始的数字
     * 
@param to 结束的数字
     * 
@throws Exception 
     
*/

    
public RegFiles(String regURL, int length, int from, int to) throws Exception {
        
this.regURL = regURL;
        
this.length = length;
        
if(from > to )
            
throw new Exception("Invalied parameter,from should be less than to");
        
this.from = from;
        
this.to = to;
        
        buildDownLoadFileList();

    }


    
public void buildDownLoadFileList() {
        fileList.clear();
        
//regURL like  http://www.abc.com/abc(*).zip
        
//the dest URL like http://www.abc.com/abc001.zip
        int index = regURL.indexOf("(*)");
        
//把(*)替换成相应的需要匹配的URL字符串 
        StringBuilder sb = new StringBuilder(regURL);
        sb 
= sb.delete(index, index + 3);
        
for (int j = from; j <= to; j++
        
{
            StringBuilder tmpsb 
= new StringBuilder(sb);
            String strj 
= String.valueOf(j);
            
            
int strlen = strj.length();
            
int zerocount = length - strlen;
            
            
//add 0 to build the url
            for (int k = 0; k < zerocount; k++
            
{
                StringBuilder jsb 
= new StringBuilder(strj);
                strj 
= jsb.insert(0,"0").toString();
            }

            fileList.add(tmpsb.insert(index,strj).toString());
            System.out.println(tmpsb.toString());
        }

    }


    
public List getFileList() {
        
return fileList;
    }

    
    
/** *//**
     * 手动设置文件url列表
     * 
@param fileList
     
*/

    
public void setFileList(List<String> fileList) {
        
this.fileList = fileList;
    }

    
/** *//**
     * 在原有基础上添加文件url列表
     * 
@param appendList
     
*/

    
public void appendFileList(List<String> appendList){
        
this.fileList.addAll(appendList);
    }

    
    
/** *//**
     * 添加一个要下载的文件url地址
     * 
@param urlfile
     
*/

    
public void appedURLFile(String urlfile){
        
this.fileList.add(urlfile);
    }


    
public int getFrom() {
        
return from;
    }


    
public void setFrom(int from) {
        
this.from = from;
    }


    
public int getLength() {
        
return length;
    }


    
public void setLength(int length) {
        
this.length = length;
    }


    
public String getRegURL() {
        
return regURL;
    }


    
public void setRegURL(String regURL) {
        
this.regURL = regURL;
    }


    
public int getTo() {
        
return to;
    }


    
public void setTo(int to) {
        
this.to = to;
    }
    
}


package  cn.heapstack.study;

import  java.io.BufferedInputStream;
import  java.io.FileOutputStream;
import  java.io.IOException;
import  java.net.HttpURLConnection;
import  java.net.URL;

public   class  URLFileSaver  implements  Runnable  {

    
private static final int BUFFER_SIZE = 4096;
    
private String destUrl;
    
private String fileName;
    
    
public URLFileSaver(String destUrl)
    
{
        
this.destUrl = destUrl;
        
int i = destUrl.lastIndexOf("/");
        
this.fileName = destUrl.substring(i+1);
    }

    
    
public void run() {
        
try {
            saveToFile(destUrl,fileName);
            
            System.out.println(
"文件:"+destUrl+"下载完成,保存为"+fileName);
        }
 catch (IOException e) {
            System.out.println(
"文件下载失败,信息:"+e.getMessage());
        }

    }


    
/** *//**
     * 将网络文件保存为本地文件的方法
     * 
@param destUrl
     * 
@param fileName
     * 
@throws IOException
     
*/

    
public void saveToFile(String destUrl, String fileName) throws IOException {
        FileOutputStream fos 
= null;
        BufferedInputStream bis 
= null;
        HttpURLConnection httpconn 
= null;
        URL url 
= null;
        
byte[] buf = new byte[BUFFER_SIZE];
        
int size = 0;

        
// 建立链接
        url = new URL(destUrl);
        httpconn 
= (HttpURLConnection) url.openConnection();
        
// 连接指定的资源
        httpconn.connect();
        
// 获取网络输入流
        bis = new BufferedInputStream(httpconn.getInputStream());
        
// 建立文件
        fos = new FileOutputStream(fileName);

        System.out.println(
"正在获取链接[" + destUrl + "]的内容\n将其保存为文件[" + fileName
                
+ "]");

        
// 保存文件
        while ((size = bis.read(buf)) != -1)
            fos.write(buf, 
0, size);

        fos.close();
        bis.close();
        httpconn.disconnect();
    }

}


package  cn.heapstack.study;

import  java.net.Authenticator;
import  java.net.PasswordAuthentication;
import  java.util.List;

public   class  FileDownLoader  {

    
public static void saveURLFileList(List<String> urlFileList) {
        
for (String aURLfile : urlFileList) {
            Thread th 
= new Thread(new URLFileSaver(aURLfile));
            th.start();
        }

        
try {
            Thread.currentThread().join();
            
        }
 catch (InterruptedException e) {
            e.printStackTrace();
        }

    }


    
/** *//**
     * 设置代理服务器
     * 
     * 
@param proxy
     * 
@param proxyPort
     
*/

    
public static void setProxyServer(String proxy, String proxyPort) {
        System.getProperties().put(
"proxySet""true");
        System.getProperties().put(
"proxyHost", proxy);
        System.getProperties().put(
"proxyPort", proxyPort);
    }


    
/** *//**
     * 设置认证用户名与密码
     * 
     * 
@param uid
     * 
@param pwd
     
*/

    
public static void setAuthenticator(final String uid, final String pwd) {
        Authenticator.setDefault(
new Authenticator() {
            
protected PasswordAuthentication getPasswordAuthentication() {
                
return new PasswordAuthentication(uid, new String(pwd)
                        .toCharArray());
            }

        }
);
    }

    
}



main函数测试代码
try   {
            RegFiles rf 
= new RegFiles("http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty(*).jpg",
                    
2,0,50);
            List
<String> urlFileList = rf.getFileList();
            FileDownLoader.saveURLFileList(urlFileList);
            
        }
  catch  (Exception e)  {
            System.out.println(e.getMessage());
        }

运行效果:

http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty00.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty01.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty02.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty03.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty04.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty05.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty06.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty07.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty08.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty09.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty10.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty11.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty12.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty13.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty14.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty15.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty16.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty17.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty18.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty19.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty20.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty21.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty22.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty23.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty24.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty25.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty26.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty27.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty28.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty29.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty30.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty31.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty32.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty33.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty34.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty35.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty36.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty37.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty38.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty39.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty40.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty41.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty42.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty43.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty44.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty45.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty46.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty47.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty48.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty49.jpg
http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty50.jpg
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty14.jpg]的内容
将其保存为文件[933421_TN_061229beauty14.jpg]
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty00.jpg
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty33.jpg
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty23.jpg]的内容
将其保存为文件[933421_TN_061229beauty23.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty19.jpg]的内容
将其保存为文件[933421_TN_061229beauty19.jpg]
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty35.jpg
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty36.jpg
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty37.jpg
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty38.jpg
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty39.jpg
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty40.jpg
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty41.jpg
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty42.jpg
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty49.jpg
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty45.jpg
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty43.jpg
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty44.jpg
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty25.jpg]的内容
将其保存为文件[933421_TN_061229beauty25.jpg]
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty46.jpg
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty15.jpg]的内容
将其保存为文件[933421_TN_061229beauty15.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty24.jpg]的内容
将其保存为文件[933421_TN_061229beauty24.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty26.jpg]的内容
将其保存为文件[933421_TN_061229beauty26.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty27.jpg]的内容
将其保存为文件[933421_TN_061229beauty27.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty29.jpg]的内容
将其保存为文件[933421_TN_061229beauty29.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty02.jpg]的内容
将其保存为文件[933421_TN_061229beauty02.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty03.jpg]的内容
将其保存为文件[933421_TN_061229beauty03.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty11.jpg]的内容
将其保存为文件[933421_TN_061229beauty11.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty17.jpg]的内容
将其保存为文件[933421_TN_061229beauty17.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty28.jpg]的内容
将其保存为文件[933421_TN_061229beauty28.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty16.jpg]的内容
将其保存为文件[933421_TN_061229beauty16.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty04.jpg]的内容
将其保存为文件[933421_TN_061229beauty04.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty09.jpg]的内容
将其保存为文件[933421_TN_061229beauty09.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty10.jpg]的内容
将其保存为文件[933421_TN_061229beauty10.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty18.jpg]的内容
将其保存为文件[933421_TN_061229beauty18.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty01.jpg]的内容
将其保存为文件[933421_TN_061229beauty01.jpg]
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty28.jpg下载完成,保存为933421_TN_061229beauty28.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty16.jpg下载完成,保存为933421_TN_061229beauty16.jpg
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty47.jpg
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty48.jpg
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty31.jpg
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty32.jpg
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty50.jpg
文件下载失败,信息:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty34.jpg
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty08.jpg]的内容
将其保存为文件[933421_TN_061229beauty08.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty21.jpg]的内容
将其保存为文件[933421_TN_061229beauty21.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty05.jpg]的内容
将其保存为文件[933421_TN_061229beauty05.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty06.jpg]的内容
将其保存为文件[933421_TN_061229beauty06.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty12.jpg]的内容
将其保存为文件[933421_TN_061229beauty12.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty20.jpg]的内容
将其保存为文件[933421_TN_061229beauty20.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty30.jpg]的内容
将其保存为文件[933421_TN_061229beauty30.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty07.jpg]的内容
将其保存为文件[933421_TN_061229beauty07.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty13.jpg]的内容
将其保存为文件[933421_TN_061229beauty13.jpg]
正在获取链接[http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty22.jpg]的内容
将其保存为文件[933421_TN_061229beauty22.jpg]
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty09.jpg下载完成,保存为933421_TN_061229beauty09.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty01.jpg下载完成,保存为933421_TN_061229beauty01.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty18.jpg下载完成,保存为933421_TN_061229beauty18.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty10.jpg下载完成,保存为933421_TN_061229beauty10.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty26.jpg下载完成,保存为933421_TN_061229beauty26.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty29.jpg下载完成,保存为933421_TN_061229beauty29.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty19.jpg下载完成,保存为933421_TN_061229beauty19.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty06.jpg下载完成,保存为933421_TN_061229beauty06.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty08.jpg下载完成,保存为933421_TN_061229beauty08.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty12.jpg下载完成,保存为933421_TN_061229beauty12.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty11.jpg下载完成,保存为933421_TN_061229beauty11.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty07.jpg下载完成,保存为933421_TN_061229beauty07.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty21.jpg下载完成,保存为933421_TN_061229beauty21.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty17.jpg下载完成,保存为933421_TN_061229beauty17.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty04.jpg下载完成,保存为933421_TN_061229beauty04.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty20.jpg下载完成,保存为933421_TN_061229beauty20.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty24.jpg下载完成,保存为933421_TN_061229beauty24.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty25.jpg下载完成,保存为933421_TN_061229beauty25.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty15.jpg下载完成,保存为933421_TN_061229beauty15.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty13.jpg下载完成,保存为933421_TN_061229beauty13.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty02.jpg下载完成,保存为933421_TN_061229beauty02.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty23.jpg下载完成,保存为933421_TN_061229beauty23.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty30.jpg下载完成,保存为933421_TN_061229beauty30.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty03.jpg下载完成,保存为933421_TN_061229beauty03.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty05.jpg下载完成,保存为933421_TN_061229beauty05.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty27.jpg下载完成,保存为933421_TN_061229beauty27.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty14.jpg下载完成,保存为933421_TN_061229beauty14.jpg
文件:http://img2.pconline.com.cn/pconline/0612/28/933421_TN_061229beauty22.jpg下载完成,保存为933421_TN_061229beauty22.jpg

你可能感兴趣的:(支持通配符的多线程文件下载)