悠然哈哈哈

导航

根据网络地址把图片保存到本地

package com.future.test;

import com.baoqilai.scp.exception.TipsException;
import com.baoqilai.scp.util.ExcelUtil;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;

import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ImgItemAddressTest {

    public static void main(String[] args) throws Exception{

        String TEMPLATE_PATH = "C:/Users/Administrator/Desktop/商品信息/itemimageaddress.xlsx";
        hale(TEMPLATE_PATH);
    }

    private static void hale(String path) {
        try {
            Resource resource =  new FileSystemResource(path);
            List<Map<Integer, Object>> itemList= ExcelUtil.parseExcel2(resource.getInputStream());
            if (itemList==null||itemList.size()==0) throw new TipsException("文件解析为空");
            Map<Integer,List<Map<Integer, Object>>> typeMap=new HashMap();

            Map<Integer,String> nameMap=new HashMap<>();
            for (int i = 0; i <itemList.size() ; i++) {
                Map<Integer, Object> map=itemList.get(i);
                Integer type=Integer.valueOf(map.get(3).toString());
                String typeName=map.get(4).toString();
                List<Map<Integer, Object>> mapList=new ArrayList<>();
                if (!typeMap.isEmpty()&&typeMap.containsKey(type)){
                    mapList=typeMap.get(type);
                }else{
                    nameMap.put(type,typeName);
                }
                mapList.add(map);
                typeMap.put(type,mapList);
            }
            //创建目录
            mkdirF(nameMap);

            for(Map.Entry<Integer, List<Map<Integer, Object>>> entry : typeMap.entrySet()){
                List<Map<Integer, Object>> list = entry.getValue();
                String typeName=list.get(0).get(4).toString();
                //创建目录
                String dirName = "C:/Users/Administrator/Desktop/商品信息/item/"+typeName;

                System.out.println("====1" + dirName );
                for (int i = 0; i < list.size(); i++) {
                    String barCode=list.get(i).get(0).toString();
                    String address=list.get(i).get(5).toString();
                    String patch=dirName+"/"+barCode+".jpg";
                    System.out.println("====2" + patch );
                    downloadPicture(address,patch);
                }
            }
        }catch (Exception e){

        }
    }

    public static void mkdirF(Map<Integer,String> nameMap){
        for(Map.Entry<Integer,String> entry : nameMap.entrySet()){
            String dirName = "C:/Users/Administrator/Desktop/商品信息/item/"+entry.getValue();
            createDir(dirName);
        }
    }

    //链接url下载图片
    private static void downloadPicture(String urlList,String path) {
        URL url = null;
        try {
            url = new URL(urlList);
            DataInputStream dataInputStream = new DataInputStream(url.openStream());

            FileOutputStream fileOutputStream = new FileOutputStream(new File(path));
            ByteArrayOutputStream output = new ByteArrayOutputStream();

            byte[] buffer = new byte[1024];
            int length;

            while ((length = dataInputStream.read(buffer)) > 0) {
                output.write(buffer, 0, length);
            }
            fileOutputStream.write(output.toByteArray());
            dataInputStream.close();
            fileOutputStream.close();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public static boolean createDir(String destDirName) {
        File dir = new File(destDirName);
        if (dir.exists()) {
            System.out.println("创建目录" + destDirName + "失败,目标目录已经存在");
            return false;
        }
        if (!destDirName.endsWith(File.separator)) {
            destDirName = destDirName + File.separator;
        }
        //创建目录
        if (dir.mkdirs()) {
            System.out.println("创建目录" + destDirName + "成功!");
            return true;
        } else {
            System.out.println("创建目录" + destDirName + "失败!");
            return false;
        }
    }
}

 

参考 

https://blog.csdn.net/qq_24521431/article/details/104466583

 

posted on 2020-11-26 14:36  悠然886  阅读(284)  评论(0编辑  收藏  举报