zoukankan      html  css  js  c++  java
  • 利用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"));
        }
    }
    

      

  • 相关阅读:
    ZOJ4125 Sekiro
    ZOJ4118 Stones in the Bucket
    ZOJ4115 Wandering Robot
    ZOJ4113 Calandar
    【递归】N皇后问题 和 2n皇后问题 dfs
    7-18
    7_13
    二维前缀和
    64位整数乘法
    【分治】魔法石的诱惑
  • 原文地址:https://www.cnblogs.com/zyzcj/p/8085714.html
Copyright © 2011-2022 走看看