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"));
        }
    }
    

      

  • 相关阅读:
    跳台阶问题
    最大连续子数组和
    寻找和为定值的若干个数
    MySQL- 用Navicat通过隧道连接到远程数据库
    CDH- 测试mr
    Sqoop- sqoop将mysql数据表导入到hive报错
    CDH- CDH大数据集群运维
    Spring- 异常org.xml.sax.SAXParseException; systemId: http://www.springframework.org/schema/context/; lineNumber: 1; columnNumber: 55; 在 publicId 和 systemId 之间需要有空格。
    Spring- 通过Xml的方式完成Bean的实例化
    Spring- Bean的命名
  • 原文地址:https://www.cnblogs.com/zyzcj/p/8085714.html
Copyright © 2011-2022 走看看