批处理 使用500个线程并发下载远程文件

工程包文件:commons-io-1.1.jar、config.properties、download.jar、start.bat

说明:借助Apache Commons IO工具包(commons-io-1.1.jar)来简单实现文件(夹)的复制、移动、删除、获取大小等操作

config.properties 文件内容:

#远程服务器下载url
remoteUrl=http://localhost:8080/test/download/a.mp3
#下载文件保存位置如F:\download
saveFileUrl=F
#并发下载线程数
threadNums=10

start.bat文件内容:

set classpath=download.jar;commons-io-1.1.jar
java FileSave

pause

download.jar 文件主class文件源码: 

import java.io.File;
import java.net.URL;
import java.util.Random;

import org.apache.commons.io.FileUtils;

public class FileSave
{
 static String remoteUrl = "http://192.168.100.15:8080/myweb/001232.mp3";
 static String saveFileUrl = "D:/download/";

 public static void main(String[] args)
 {
  for (int i = 0; i < 500; i++)
  {
   new Thread(new myThread(remoteUrl, saveFileUrl)).start();
  }
 }

}

class myThread implements Runnable
{
 int NUM = 1;

 String remoteUrl = "";
 String saveFileUrl = "";

 public myThread(String remoteUrl, String saveFileUrl)
 {
  this.remoteUrl = remoteUrl;
  this.saveFileUrl = saveFileUrl;
 }

 public void run()
 {
  downloadFromUrl(remoteUrl, saveFileUrl);
 }

 /**
  * 文件下载的方法
  */
 public static String downloadFromUrl(String url, String dir)
 {
  String fileName = "";

  try
  {
   URL httpurl = new URL(url);
   String[] us = url.split("/");
   fileName = us[us.length - 1];
   String ramdom = System.currentTimeMillis() + ""
     + new Random().nextInt(100);
   fileName = ramdom + "_" + fileName;
   System.out.println("fileName:" + fileName);
   File f = new File(dir + fileName);
   FileUtils.copyURLToFile(httpurl, f);
  } catch (Exception e)
  {
   e.printStackTrace();
   return "Fault!";
  }

  return fileName;
 }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值