Android基于HttpUrlConnection类的文件下载实例代码
发布时间 - 2026-01-11 03:04:27 点击率:次废话不多说了,直接给大家贴代码了,具体代码如所示:
/**
* get方法的文件下载
* <p>
* 特别说明 android中的progressBar是google唯一的做了处理的可以在子线程中更新UI的控件
*
* @param path
*/
private void httpDown(final String path) {
new Thread() {
@Override
public void run() {
URL url;
HttpURLConnection connection;
try {
//统一资源
url = new URL(path);
//打开链接
connection = (HttpURLConnection) url.openConnection();
//设置链接超时
connection.setConnectTimeout(4000);
//设置允许得到服务器的输入流,默认为true可以不用设置
connection.setDoInput(true);
//设置允许向服务器写入数据,一般get方法不会设置,大多用在post方法,默认为false
connection.setDoOutput(true);//此处只是为了方法说明
//设置请求方法
connection.setRequestMethod("GET");
//设置请求的字符编码
connection.setRequestProperty("Charset", "utf-8");
//设置connection打开链接资源
connection.connect();
//得到链接地址中的file路径
String urlFilePath = connection.getURL().getFile();
//得到url地址总文件名 file的separatorChar参数表示文件分离符
String fileName = urlFilePath.substring(urlFilePath.lastIndexOf(File.separatorChar) + 1);
//创建一个文件对象用于存储下载的文件 此次的getFilesDir()方法只有在继承至Context类的类中
// 可以直接调用其他类中必须通过Context对象才能调用,得到的是内部存储中此应用包名下的文件路径
//如果使用外部存储的话需要添加文件读写权限,5.0以上的系统需要动态获取权限 此处不在不做过多说明。
File file = new File(getFilesDir(), fileName);
//创建一个文件输出流
FileOutputStream outputStream = new FileOutputStream(file);
//得到链接的响应码 200为成功
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
//得到服务器响应的输入流
InputStream inputStream = connection.getInputStream();
//获取请求的内容总长度
int contentLength = connection.getContentLength();
//设置progressBar的Max
mPb.setMax(contentLength);
//创建缓冲输入流对象,相对于inputStream效率要高一些
BufferedInputStream bfi = new BufferedInputStream(inputStream);
//此处的len表示每次循环读取的内容长度
int len;
//已经读取的总长度
int totle = 0;
//bytes是用于存储每次读取出来的内容
byte[] bytes = new byte[1024];
while ((len = bfi.read(bytes)) != -1) {
//每次读取完了都将len累加在totle里
totle += len;
//每次读取的都更新一次progressBar
mPb.setProgress(totle);
//通过文件输出流写入从服务器中读取的数据
outputStream.write(bytes, 0, len);
}
//关闭打开的流对象
outputStream.close();
inputStream.close();
bfi.close();
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "下载完成!", Toast.LENGTH_SHORT).show();
}
});
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
总结
以上所述是小编给大家介绍的Android基于HttpUrlConnection类的文件下载实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# android
# 文件下载
# httpurlconnection
# Android HttpURLConnection下载网络图片设置系统壁纸
# Android 用HttpURLConnection访问网络的方法
# Android网络技术HttpURLConnection详解
# Android程序开发通过HttpURLConnection上传文件到服务器
# Android 中HttpURLConnection与HttpClient使用的简单实例
# Android HttpURLConnection.getResponseCode()错误解决方法
# Android使用HttpURLConnection实现网络访问流程
# 给大家
# 创建一个
# 小编
# 类中
# 的是
# 默认为
# 总长度
# 在此
# 说了
# 不多
# 都将
# 不做
# 所示
# 相对于
# 用在
# 所述
# 给我留言
# 感谢大家
# 高一些
# 疑问请
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
企业网站制作这些问题要关注
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
如何快速辨别茅台真假?关键步骤解析
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
新三国志曹操传主线渭水交兵攻略
如何实现javascript表单验证_正则表达式有哪些实用技巧
焦点电影公司作品,电影焦点结局是什么?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
魔方云NAT建站如何实现端口转发?
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
如何在Windows虚拟主机上快速搭建网站?
详解CentOS6.5 安装 MySQL5.1.71的方法
EditPlus中的正则表达式 实战(2)
如何快速配置高效服务器建站软件?
如何用西部建站助手快速创建专业网站?
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
如何在新浪SAE免费搭建个人博客?
中山网站推广排名,中山信息港登录入口?
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
网站页面设计需要考虑到这些问题
Python制作简易注册登录系统
如何在自有机房高效搭建专业网站?
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
大连 网站制作,大连天途有线官网?
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
,在苏州找工作,上哪个网站比较好?
Laravel如何集成Inertia.js与Vue/React?(安装配置)
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
重庆市网站制作公司,重庆招聘网站哪个好?
如何快速上传自定义模板至建站之星?
Laravel如何实现模型的全局作用域?(Global Scope示例)
QQ浏览器网页版登录入口 个人中心在线进入
昵图网官网入口 昵图网素材平台官方入口
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
如何在服务器上三步完成建站并提升流量?
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
BootStrap整体框架之基础布局组件
再谈Python中的字符串与字符编码(推荐)
如何在搬瓦工VPS快速搭建网站?

