android下载网络图片

本文介绍了一个简单的Java程序,用于从网络上下载图片并保存到本地。通过使用HttpURLConnection发起GET请求,程序能够处理图片的获取及文件的保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. package com.home;  
  2.   
  3. import java.io.ByteArrayOutputStream;  
  4. import java.io.File;  
  5. import java.io.FileOutputStream;  
  6. import java.io.InputStream;  
  7. import java.net.HttpURLConnection;  
  8. import java.net.URL;  
  9.   
  10. public class DownloadImage {  
  11.     public DownloadImage() {  
  12.         try {  
  13.             getImage();  
  14.         } catch (Exception e) {  
  15.             e.printStackTrace();  
  16.         }  
  17.     }  
  18.   
  19.     public static void main(String[] args) {  
  20.         new DownloadImage();  
  21.     }  
  22.   
  23.     /** 
  24.      * 读取网络图片 
  25.      *  
  26.      * @throws Exception 
  27.      */  
  28.     public void getImage() throws Exception {  
  29.         // 图片url路劲  
  30.         String urlpath = "http://pica.nipic.com/2008-05-23/200852381811521_2.jpg";  
  31.         // 建立URL对象,抛出异常  
  32.         URL url = new URL(urlpath);  
  33.         // 得到HttpURLConnection对象  
  34.         HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
  35.         // 声明请求方式  
  36.         conn.setRequestMethod("GET");  
  37.         // 设置连接超时  
  38.         conn.setConnectTimeout(6 * 1000);  
  39.         // 连接成功  
  40.         if (conn.getResponseCode() == 200) {  
  41.             // 得到服务器传回来的数据,相对我们来说输入流  
  42.             InputStream inputStream = conn.getInputStream();  
  43.             // 得到数据  
  44.             byte[] data = readInStream(inputStream);  
  45.             // 创建保存文件  
  46.             File file = new File("C:/image.jpg");  
  47.             // 创建一个文件输出流  
  48.             FileOutputStream outputStream = new FileOutputStream(file);  
  49.             // 将我们所得的二进制数据全部写入我们建好的文件中  
  50.             outputStream.write(data);  
  51.             // 关闭输出流  
  52.             outputStream.close();  
  53.         }  
  54.   
  55.     }  
  56.   
  57.     /** 
  58.      * 读取流文件的内容 
  59.      *  
  60.      * @param inputStream 
  61.      * @return 
  62.      * @throws Exception 
  63.      */  
  64.     public byte[] readInStream(InputStream inputStream) throws Exception {  
  65.         ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();  
  66.         // 声明缓冲区  
  67.         byte[] buffer = new byte[1024];  
  68.         // 定义读取默认长度  
  69.         int length = -1;  
  70.         while ((length = inputStream.read(buffer)) != -1) {  
  71.             // 把缓冲区中输出到内存中  
  72.             byteArrayOutputStream.write(buffer, 0, length);  
  73.         }  
  74.         // 关闭输出流  
  75.         byteArrayOutputStream.close();  
  76.         // 关闭输入流  
  77.         inputStream.close();  
  78.         // 返回这个输出流的字节数组  
  79.         return byteArrayOutputStream.toByteArray();  
  80.     }  
  81. }  
package com.home;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class DownloadImage {
	public DownloadImage() {
		try {
			getImage();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		new DownloadImage();
	}

	/**
	 * 读取网络图片
	 * 
	 * @throws Exception
	 */
	public void getImage() throws Exception {
		// 图片url路劲
		String urlpath = "http://pica.nipic.com/2008-05-23/200852381811521_2.jpg";
		// 建立URL对象,抛出异常
		URL url = new URL(urlpath);
		// 得到HttpURLConnection对象
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		// 声明请求方式
		conn.setRequestMethod("GET");
		// 设置连接超时
		conn.setConnectTimeout(6 * 1000);
		// 连接成功
		if (conn.getResponseCode() == 200) {
			// 得到服务器传回来的数据,相对我们来说输入流
			InputStream inputStream = conn.getInputStream();
			// 得到数据
			byte[] data = readInStream(inputStream);
			// 创建保存文件
			File file = new File("C:/image.jpg");
			// 创建一个文件输出流
			FileOutputStream outputStream = new FileOutputStream(file);
			// 将我们所得的二进制数据全部写入我们建好的文件中
			outputStream.write(data);
			// 关闭输出流
			outputStream.close();
		}

	}

	/**
	 * 读取流文件的内容
	 * 
	 * @param inputStream
	 * @return
	 * @throws Exception
	 */
	public byte[] readInStream(InputStream inputStream) throws Exception {
		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
		// 声明缓冲区
		byte[] buffer = new byte[1024];
		// 定义读取默认长度
		int length = -1;
		while ((length = inputStream.read(buffer)) != -1) {
			// 把缓冲区中输出到内存中
			byteArrayOutputStream.write(buffer, 0, length);
		}
		// 关闭输出流
		byteArrayOutputStream.close();
		// 关闭输入流
		inputStream.close();
		// 返回这个输出流的字节数组
		return byteArrayOutputStream.toByteArray();
	}
}


 

### 回答1: 虚拟机软件VirtualBox报错x80004005可能是由于多种原因引起的,例如安装不完整、权限不足、磁盘空间不足等。解决方法包括重新安装VirtualBox、以管理员身份运行VirtualBox、清理磁盘空间等。具体方法需要根据具体情况进行调整。 ### 回答2: VirtualBox 是一个常用的虚拟机软件,用于创建虚拟计算机和虚拟操作系统,如果在使用 VirtualBox 时遇到了 0x80004005 报错,通常有以下几个原因并可以尝试解决: 1. VirtualBox 版本不兼容 如果安装的 VirtualBox 版本不兼容与你的系统、主机 CPU 或 BIOS,就会出现报错。你可以下载最新版本的 VirtualBox,并确保它适用于你的系统。 2. 未启用硬件虚拟化(VT-x) VirtualBox 在运行时需要硬件虚拟化 (VT-x) 的支持。 所以你需要检查你的 CPU 和 BIOS 是否支持硬件虚拟化并已启用。 如何启用硬件虚拟化需要根据计算机品牌和型号有所不同,建议到官方网站查找指导文档。 3. 权限和安全设置 某些情况下,用户的权限和安全设置也可能导致VirtualBox出现0x80004005报错。 你可以检查你的安全设置,并尝试以管理员身份运行 VirtualBox,或者试着将 VirtualBox.exe 添加到防病毒软件的白名单中。 总之,0x80004005 报错通常是由于 VirtualBox 版本不兼容、未启用硬件虚拟化 (VT-x) 或权限和安全设置的问题造成的。对于不同的情况,可采取不同的解决方法,排除故障并解决问题。 ### 回答3: VirtualBox是一款常用的虚拟机软件,它可以让我们在一台物理机上模拟多个虚拟机,是学习、测试和开发的必备工具。虽然VirtualBox比较受欢迎,但在使用过程中仍可能遇到一些问题,例如出现了0x80004005这个错误代码。 0x80004005是一个Win32 API的错误代码,这种错误通常会出现在VirtualBox的安装、配置或者启动过程中。在VirtualBox中,0x80004005代码通常会被伴随着一些错误信息,比如:“无法创建虚拟机”,“未能打开虚拟磁盘”,“无法加载虚拟机配置文件”等等。 解决这个问题的方法有很多,下面提供几种可能会有帮助的方法: 1.查看版本号:VirtualBox可能无法与其他软件版本兼容,因此建议在安装或升级VirtualBox之前查看版本号并确保它与您的电脑系统兼容。 2.重置 VirtualBox 的设置:在VirtualBox的选项设置中,有一个“重置”按钮可以重置所有选项,以解决一些未知的问题。 3.删除注册表项:如果VirtualBox无法启动或安装,可能是由于注册表项损坏所致,此时建议手动删除相关的注册表项并尝试重新安装或启动。 4.卸载并重新安装VirtualBox: 如果以上方法无效,最好的方法是卸载原始版本的VirtualBox,清理系统,并重新安装软件。重新安装之前不要忘记先备份虚拟机。 总之,0x80004005错误代码是一个比较常见的问题,但是对于每个用户具体情况可能不同,需要根据具体情况采取相应的措施。希望以上解决方法能帮助大家。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值