欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java之http下载图片无法打开

程序员文章站 2022-10-03 11:15:55
之前下载可以,忽然之间不行了import org.apache.commons.io.FileUtils;public static void downReloadUrlFile(String url, String filePath) {try {URL httpurl = new URL(url);File out_file = new File(filePath);FileUtils.copyURLToFile(httpurl, out_file);} cat...

之前下载可以,忽然之间不行了

import org.apache.commons.io.FileUtils;

public static void downReloadUrlFile(String url, String filePath) {
		try {
			URL httpurl = new URL(url);
			File out_file = new File(filePath);
			FileUtils.copyURLToFile(httpurl, out_file);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

新的下载

        String ht = "http://pi.weather.com.cn/i/product/pic/l/sevp_aoc_rdcp_sldas_ebref_achn_l88_pi_20201111071200001.png";
        String fileName = "E:/radar/chn/2020/11/11/20201111071200001.png";
downPictor(ht, fileName);

	public static void downPictor(String url,String name){
		CloseableHttpClient httpClient = null;
		InputStream inputStream = null;
		File file = null;
		try {
			httpClient = HttpClients.createDefault();
			HttpGet method = new HttpGet(url);
			HttpResponse result = httpClient.execute(method);
			inputStream = result.getEntity().getContent();
			//得到图片的二进制数据,以二进制封装得到数据,具有通用性
			byte[] data = readInputStream(inputStream);
			//new一个文件对象用来保存图片,默认保存当前工程根目录
			File imageFile = new File(name);
			if(!new File(imageFile.getParent()).exists()){
				new File(imageFile.getParent()).mkdirs();
			}
			//创建输出流
			FileOutputStream outStream = new FileOutputStream(imageFile);
			//写入数据
			outStream.write(data);
			//关闭输出流
			outStream.close();
		} catch (Exception e) {
		} finally {
			try {
				inputStream.close();
			} catch (IOException e) {

			}
			try {
				httpClient.close();
			} catch (IOException e) {

			}
		}
	}


	public static byte[] readInputStream(InputStream inStream) throws Exception{
		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
		//创建一个Buffer字符串
		byte[] buffer = new byte[1024];
		//每次读取的字符串长度,如果为-1,代表全部读取完毕
		int len = 0;
		//使用一个输入流从buffer里把数据读取出来
		while( (len=inStream.read(buffer)) != -1 ){
			//用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度
			outStream.write(buffer, 0, len);
		}
		//关闭输入流
		inStream.close();
		//把outStream里的数据写入内存
		return outStream.toByteArray();
	}
```java


本文地址:https://blog.csdn.net/jiangshuanshuan/article/details/109624937

相关标签: java基础