day day up--Java实现http文件下载

本文介绍通过HTTP协议下载文件的基本步骤及Java实现代码。包括客户端如何根据URL发起请求、与服务器建立连接并验证权限,以及使用BufferedReader和BufferedInputStream进行不同文件类型的下载。

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

            在网络中下载某个文件资源的方法有很多种,基于HTTP协议的是其中常用的一种。http从网络中下载文件简单的说主要有三个步骤:

1.客户端根据确定访问资源的URL向它所在的服务器发出连接请求。

2.与服务器连接成功(过程中判断权限、网络环境等条件)。

3.开始下载文件(流读取、存储等等)。

Java实现的代码如下所示:

	StringBuffer sb = new StringBuffer();  //存放下载的文件序列
	String line = null;
	BufferedReader buffer = null;
	
        // 创建一个URL对象
        URL url = new URL(urlString);
        // 创建一个Http连接
        HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
	// 使用IO流读取数据
	buffer = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
		while ((line = buffer.readLine()) != null) {
				sb.append(line);
				}
	buffer.close();
	return sb.toString();   //返回文件字符串序列

这里需要注意的是,创建URL对象、尝试打开网络连接、读取IO流操作以及最后的关闭流的代码都要放在try-catch语句中分别进行异常处理,否则编译不会通过。最后读取流完毕后要关闭连接关闭IO流。返回的文件字符串不用写入文件存储,要用于后续处理,一般这种方式常用在需要马上对下载的字符流数据进行处理,例如XML文件解析、JSON数据下载解析等。

再补充一点,忽略了个问题,纠结半天的利用BufferedReader下载视频、音频、apk等文件时总是下载不完整,奇怪的是不管下多大的文件,(文件过大放入StringBuffer不写入存储设备会导致OutOfMemory错误),我每次测试都是下载到实际大小的93%就停止了,导致下载文件不完整。BufferedReader只是针对字符流的便捷方法,因为它有readLine方法可以每次读取一行,但是对于字节流或二进制流等,读取就会出现问题,应该采用BufferedInputStream流来读取文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值