All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.basics.util.extend.DownLoadFile Maven / Gradle / Ivy

package cn.basics.util.extend;

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;

public class DownLoadFile {

	public static final String defaultSavePath = System.getProperty("user.dir")+"/downLoadFiel";

	/**
	 * 从网络Url中下载文件
	 * @param urlStr	下载地址
	 * @param fileName	文件名称
	 * @param savePath	保存路径
	 * @throws IOException
	 */
	public static void downLoadFromUrl(String urlStr,String fileName,String savePath) throws IOException{
		String defaultFileName = urlStr.substring(urlStr.replaceAll("\\\\", "/").lastIndexOf("/")+1);
		String fileType = urlStr.substring(urlStr.lastIndexOf("."));
		if(fileName==null||"".equals(fileName))fileName = defaultFileName;
		if(fileName.indexOf(".")==-1)fileName+=fileType;
		if(savePath==null||"".equals(savePath))savePath=defaultSavePath;
		URL url = new URL(urlStr);
		HttpURLConnection conn = (HttpURLConnection)url.openConnection();
		//设置超时间为30秒
		conn.setConnectTimeout(30*1000);
		//防止屏蔽程序抓取而返回403错误
		conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
		//得到输入流
		InputStream inputStream = conn.getInputStream();
		//获取自己数组
		byte[] getData = readInputStream(inputStream);
		//文件保存位置
		File saveDir = new File(savePath);
		if(!saveDir.exists()){
			saveDir.mkdir();
		}
		File folder = new File(saveDir+File.separator);
		if (!folder.exists()) {
			folder.mkdirs();
		}
		File file = new File(saveDir+File.separator+fileName);
		FileOutputStream fos = new FileOutputStream(file); 
		fos.write(getData); 
		if(fos!=null){
			fos.close();
		}
		if(inputStream!=null){
			inputStream.close();
		}
		System.out.println("info:"+url+" download success"); 
	}
	/**
	 * 从输入流中获取字节数组
	 * @param inputStream
	 * @return
	 * @throws IOException
	 */
	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) {
		try{
			downLoadFromUrl("http://101.95.48.97:8005/res/upload/interface/apptutorials/manualstypeico/6f83ce8f-0da5-49b3-bac8-fd5fc67d2725.png",
					"百度","C:/downLoadFiel");
		}catch (Exception e) {
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy