zoukankan      html  css  js  c++  java
  • 下载的方法

    package com.****.common;
    
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    import org.apache.log4j.Logger;
    
    import com.nantian.service.CloudInteraction.getBlackListService;
    
    import sun.print.resources.serviceui;
    /** 
    * @ClassName: DownloadFileUtil 
    * @Description: TODO
    * @author: 92649498
    * @date: 2019年11月14日 下午5:03:30 
    * Class explain: 下载类
    */
    public class DownloadFileUtil {
    private static Logger logger = Logger.getLogger(DownloadFileUtil.class);
    
    //url下载地址 path保存路径
    /** 
    * 
    * url下载地址 path保存路径
    * @Title: downLoad 
    * @Description: TODO 
    * @param fileUrl //文件下载地址
    * @param path //文件保存路径
    * @throws Exception void
    * @author :92649498
    * @date 2019年11月14日下午5:03:59
    * Method explain : 下载的方法 
    */ 
    
    public void downLoad(String fileUrl,String path) throws Exception {
    logger.info("[ 下载的方法 : ] 开始执行 ");
    //    URL url=new URL(fileUrl);
    //2019年12月6日 从新修改的
    URL url=new URL(null,fileUrl,new sun.net.www.protocol.http.Handler());
    //    logger.info("[ 下载的方法 : ] 开始执行 "+url);
    
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
    //    logger.info("[ 下载的方法 : ] 开始执行 "+urlConnection);
    
    // 防止屏蔽程序抓取而返回403错误
    //setRequestMethod(String method) 设置URL请求的方法,其中之一是:GET POST HEAD OPTIONS PUT DELETE TRACE是符合协议限制的合法的。
    urlConnection.setRequestMethod("GET");
    //    logger.info("[ 下载的方法 : ] 开始执行 GET");
    
    //setRequestProperty(String key, String value) 设置一般请求属性。
    urlConnection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
    //    logger.info("[ 下载的方法 : ] urlConnection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");");
    
    //setRequestProperty(String key, String value) 设置一般请求属性。
    urlConnection.setRequestProperty("content-type", "application/zip");
    //    logger.info("[ 下载的方法 : ] 开始执行 urlConnection.setRequestProperty("content-type", "application/zip");");
    
    //setInstanceFollowRedirects(boolean followRedirects) 设置HTTP重定向(响应代码为3xx的请求)是否应该由此 HttpURLConnection实例自动跟随。 
    urlConnection.setInstanceFollowRedirects(false);
    //    logger.info("[ 下载的方法 : ] 开始执行 GET");
    
    //setDoInput(boolean doinput) 设置的值 doInput领域本 URLConnection指定值。
    urlConnection.setDoInput(true);
    //    logger.info("[ 下载的方法 : ] 开始执行 urlConnection.setDoInput(true);");
    
    //setDoOutput(boolean dooutput) 设置的值 doOutput领域本 URLConnection指定值。
    urlConnection.setDoOutput(true);
    //    logger.info("[ 下载的方法 : ] 开始执行 urlConnection.setDoOutput(true);");
    
    //setUseCaches(boolean usecaches) 设置的值 useCaches这个领域 URLConnection到指定值。
    urlConnection.setUseCaches(false);
    //    logger.info("[ 下载的方法 : ] 开始执行 urlConnection.setUseCaches(false);");
    
    //setRequestProperty(String key, String value) 设置一般请求属性。
    urlConnection.setRequestProperty("CHARSET", "GBK");
    //由于 上海的网速比较慢 所以修改 超时时间 30分钟
    //    logger.info("[ 下载的方法 : ] 开始执行 urlConnection.setRequestProperty("CHARSET", "GBK");");
    
    //    setReadTimeout(int timeout) 5分钟链接超时后 报错    将读取超时设置为指定的超时时间,以毫秒为单位。
    urlConnection.setReadTimeout(30*60*1000);
    //    logger.info("[ 下载的方法 : ] 开始执行 urlConnection.setConnectTimeout(300000);");
    
    // 得到输入流
    InputStream inputStream = urlConnection.getInputStream();
    //    logger.info("[ 下载的方法 : ] 开始执行 inputStream "+inputStream);
    
    // 获取自己数组
    //    logger.info("[ 下载的方法 : ] 开始执行 92行 ");
    byte[] getData = readInputStream(inputStream);
    
    //String path = System.getProperty("user.dir") + "/file/";
    
    // 文件保存位置
    //    logger.info("[ 下载的方法 : ] 开始执行95文件保存位置 "+path);
    
    File saveDir = new File(path);
    //    logger.info("[ 下载的方法 : ] 开始执行98 保存文件 "+saveDir);
    
    FileOutputStream fos = new FileOutputStream(saveDir);
    //    logger.info("[ 下载的方法 : ] 开始执行101 输出文件 "+fos);
    
    //    FileOutputStream fos = new FileOutputStream(path);
    //    FileOutputStream fos = new FileOutputStream(path);
    fos.write(getData);
    
    if (fos != null) {
    fos.close();
    }
    if (inputStream != null) {
    inputStream.close();
    }
    urlConnection.disconnect();
    logger.info("[ 下载的方法 : ] 执行结束117");
    
    }
    
    public static byte[] readInputStream(InputStream inputStream) throws IOException {
    byte[] buffer = new byte[1024];
    int len = 0;
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    while ((len = inputStream.read(buffer)) != -1) {
    bos.write(buffer, 0, len);
    }
    bos.close();
    return bos.toByteArray();
    }
    
    public static void main(String[] args) {
    
    
    DownloadFileUtil downloadFile=new DownloadFileUtil();
    //    String path="/root/ETCPMC-A-H-190326-04-1.gz";
    String path="/root/ETCPMC-A-H-191206-05-1.gz";
    try {
    System.err.println("开始进入下载了");
    downloadFile.downLoad(urlStr, path);
    System.out.println("下载成功");
    } catch (Exception e) {
    System.out.println("断网报错");
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    只限阅读,未经允许不得转载,如有问题请@本人,如我方内容侵权请及时告知我方。
  • 相关阅读:
    java面试之String源码中equals具体实现
    JVM虚拟机—JVM的垃圾回收机制(转载)
    Mysql学习笔记—视图
    Mysql学习笔记—索引
    JVM虚拟机—JVM内存
    设计模式—装饰器模式
    设计模式—代理模式
    设计模式—适配器模式
    设计模式—观察者模式
    设计模式—建造者模式
  • 原文地址:https://www.cnblogs.com/wzy-525/p/12654064.html
Copyright © 2011-2022 走看看