下载的方法

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();
}
}
}
只限阅读,未经允许不得转载,如有问题请@本人,如我方内容侵权请及时告知我方。
原文地址:https://www.cnblogs.com/wzy-525/p/12654064.html