通过url下载文件并保存

2 篇文章 0 订阅
1 篇文章 0 订阅
/**
	 * 说明:根据指定URL将文件下载到指定目标位置
	 * 
	 * @param urlPath  下载路径          
	 * @param downloadDir  文件存放目录             
	 * @param fileFullName   下载的文件名
	 * @return 返回下载文件
	 */
	@SuppressWarnings("finally")
	public static File downloadFile(String urlPath, String downloadDir,String fileFullName) {
		File file = null;
		try {
			// 统一资源
			URL url = new URL(urlPath);
			// 连接类的父类,抽象类
			URLConnection urlConnection = url.openConnection();
			// http的连接类
			HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection;
			//设置超时
			httpURLConnection.setConnectTimeout(1000*5);
			//设置请求方式,默认是GET
			httpURLConnection.setRequestMethod("POST");
			// 设置字符编码
			httpURLConnection.setRequestProperty("Charset", "UTF-8");
			// 打开到此 URL引用的资源的通信链接(如果尚未建立这样的连接)。
			httpURLConnection.connect();		
			// 文件大小
			int fileLength = httpURLConnection.getContentLength();
 
			// 控制台打印文件大小
			System.out.println("您要下载的文件大小为:" + fileLength / (1024 * 1024) + "MB");
			if (fileLength/(1023*1024) == 0) {
				System.out.println("文件"+fileFullName+"为空");
			}
 
			// 建立链接从请求中获取数据
			URLConnection con = url.openConnection();
			BufferedInputStream bin = new BufferedInputStream(httpURLConnection.getInputStream());
			// 指定文件名称(有需求可以自定义)
			//String fileFullName = "222.GR2";
			// 指定存放位置(有需求可以自定义)
			String path = downloadDir + File.separatorChar+ fileFullName;
			file = new File(path);
			// 校验文件夹目录是否存在,不存在就创建一个目录
			if (!file.getParentFile().exists()) {
				file.getParentFile().mkdirs();
			}
 
			OutputStream out = new FileOutputStream(file);
			int size = 0;
			int len = 0;
			byte[] buf = new byte[2048];
			while ((size = bin.read(buf)) != -1) {
				len += size;
				out.write(buf, 0, size);
				// 控制台打印文件下载的百分比情况
				//System.out.println("下载了-------> " + len * 100 / fileLength + "%\n");
				
			}
			// 关闭资源
			bin.close();
			out.close();
			System.out.println("文件下载成功!"+fileFullName);
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block		
			e.printStackTrace();
			System.out.println("文件下载失败!");
		} finally {
			return file;
		}
 
	}
	/**
	 * 拼接cimiss参数
	 * @param parammap
	 * @return
	 */
	public static String getCimissParams(Map<String, String> parammap) {
		String params = "";
		//基础key
		String userId = "userId";
		String pwd = "pwd";
		String interfaceId = "interfaceId";
		String dataCode = "dataCode";
		String prodCode = "prodCode";
		if(parammap!=null && parammap.size()>0){
			if(!parammap.containsKey(userId) || !parammap.containsKey(pwd) || !parammap.containsKey(interfaceId) || !parammap.containsKey(dataCode)|| !parammap.containsKey(prodCode)){
				System.out.println("cimiss missing basic parameters!");
				return params;
			}
			Set<String> keySet = parammap.keySet();
			int num = 0;
			for(String k : keySet){
				String val = parammap.get(k);
				if(num>0){
					params +="&";
				}
				params +=k + "=" + val;
				num++;
			}
		}
		return params;
	}
	public static void main(String[] args) throws ParseException {	
		String ipp = "8.141.52.133";//ip
		String userId = "pvc_chongq_caras_1x1";//用户名
		String pwd = "pvc_chongq_caras_1x1";//密码
		String interfaceId = "downFile";//访问接口
		String dataCode = "LAPS_CUSTOMIZE_CARAS_1X1_CHONGQ";//资料代码		
		String prodCode = "CARAS1KM";
		String times= "输入时间";	
		
		Map<String, String> paramsmap = new HashMap<>();
		paramsmap.put("userId", userId);
		paramsmap.put("pwd", pwd);
		paramsmap.put("interfaceId", interfaceId);
		paramsmap.put("dataCode", dataCode);
		paramsmap.put("prodCode", prodCode);
    	paramsmap.put("times", times);
    	//获取url
    	String params = getCimissParams(paramsmap);
		String ws1 = "http://" + ipp + "/downUdi/downFile?"+params;
		//System.out.println(ws1);
		
		//获取地址
		arrayList.add("E:/新建文件夹"+"/MSP3_PMSC_CARAS1KM_ME_L88_CQ_"+times+"_00000-00000.GR2");
		String filepath = arrayList.get(i);
		downloadFile(ws1, "", filepath);
		}
		

	/*	// 指定资源地址,下载文件测试
		downloadFile("http://8.141.52.133/downUdi/downFile?times=20210511120000&dataCode=LAPS_CUSTOMIZE_CARAS_1X1_CHONGQ&pwd=pvc_chongq_caras_1x1&interfaceId=downFile&prodCode=CARAS1KM&userId=pvc_chongq_caras_1x1",
				"","E:/新建文件夹"+"/MSP3_PMSC_CARAS1KM_ME_L88_CQ_"+"202105111200"+"_00000-00000.GR2");
 */
	}
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值