这个是一个多线程下载网络文件工具类,带百分比进度条日志输出
package com.yuanda.erp9.syn.util;
import com.yuanda.erp9.syn.exception.TargetServerException;
import lombok.extern.slf4j.Slf4j;
import java.io.File;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;
/**
* @Description: 多线程网络文件下载工具类
* @Params:
* @Return:
* @Author: Mr.myq
* @Date: 2023/2/313:34
*/
@Slf4j
public class ManyThreadFileDownloadUtil {
private static Map<String,AtomicInteger> stringAtomicIntegerMap = new ConcurrentHashMap<>();
/**
* @Description: 提交任务
* @Params:
* @Return:
* @Author: Mr.myq
* @Date: 2023/2/313:31
*/
public static void commitTask(String fileUrlStr, String dir, String fileName) {
File file = new File(dir + "/" + fileName);
//删除文件
if (file.exists()) {
if (file.delete()) {
log.info("*********************删除Future-" + file.getName() + "本地临时文件成功********************");
}
}
int maxThreadCount = 2;
long s = System.currentTimeMillis();
HttpURLConnection conn = null;
ExecutorService executorService = Executors.newFixedThreadPool(maxThreadCount);
stringAtomicIntegerMap.put(fileName,new AtomicInteg