利用goole guava 下载文件到本地

package com.road.crawler.meizitu.crawler;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.google.common.base.Strings;
import com.google.common.io.ByteStreams;
import com.google.common.io.Closer;
import com.google.common.io.Files;

/**
 * 下载图片到指定目录
 *
 *
 */
public class DowloadImage {

    private static Log log = LogFactory.getLog(DowloadImage.class);

    /**
     * 下载图片到指定目录
     *
     * @param parentPath 指定目录
     * @param imgUrl 图片地址
     * @return 下载文件地址
     */
    public static String download(String parentPath, String imgUrl) {
        if(Strings.isNullOrEmpty(imgUrl) || Strings.isNullOrEmpty(parentPath)) {
            return null;
        }
        if(imgUrl.length() > 500) {
            return null;
        }
        Closer closer = Closer.create();
        try {
            File imageDir = new File(parentPath);
            if(!imageDir.exists()) {
                imageDir.mkdirs();
            }
            String fileName =  StringUtils.substringBefore(imgUrl, "?");
            fileName = StringUtils.substringAfterLast(fileName, "/");
            File imageFile = new File(imageDir, fileName);
            InputStream in = closer.register(new URL(imgUrl).openStream());
            Files.write(ByteStreams.toByteArray(in), imageFile);
            return imageFile.getAbsolutePath();
        } catch(Exception ex) {
            ex.printStackTrace();
            log.error("image download error :"+imgUrl);
            return null;
        } finally {
            try {
                closer.close();
            } catch (IOException e) {
                closer = null;
            }
        }
    }
    /**
     * 下载图片到指定目录
     *
     * @param parentPath 指定目录
     * @param fileName 图片名称
     * @param in 输入流
     * @return 下载文件地址
     */
    public static String download(String parentPath, String fileName, InputStream in) {
        Closer closer = Closer.create();
        try {
            File imageDir = new File(parentPath);
            if(!imageDir.exists()) {
                imageDir.mkdirs();
            }
            File imageFile = new File(imageDir, fileName);
            Files.write(ByteStreams.toByteArray(in), imageFile);
            return imageFile.getAbsolutePath();
        } catch(Exception ex) {
            ex.printStackTrace();
            return null;
        } finally {
            try {
                closer.close();
            } catch (IOException e) {
                closer = null;
            }
        }
    }

    public static void main(String[] args) {
        System.out.println(DowloadImage.download("d:\\", "https://ss3.baidu.com/-fo3dSag_xI4khGko9WTAnF6hhy/image/h%3D300/sign=09cd05db104c510fb1c4e41a50582528/b8389b504fc2d5620bbc0bfeed1190ef76c66c69.jpg"));
    }
}

  

posted on 2017-12-22 14:05  zzz初见  阅读(2341)  评论(0编辑  收藏  举报

导航