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(); } } }
下载的方法
只限阅读,未经允许不得转载,如有问题请@本人,如我方内容侵权请及时告知我方。