文件下载显示进度条

2024-08-26 06:58
文章标签 显示 下载 进度条

本文主要是介绍文件下载显示进度条,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

         文件下载网络上下载资源,当文件比较小的时候,没有显示进度,可能看不出来什么,但当文件内容比较大,显示出进度条,这样就更加贴切的让用户感到文件下载的状况。

     现在先做一个小例子,主要是现在控制台输出文件下载的进度。

  

package com.tgb.demo;import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;/*** Created by zss on 2017/3/5.*/
public class download {public static void dowanload(String url, String path)throws IOException {System.out.println("下载中...");InputStream inputStream = null;RandomAccessFile randomAccessFile = null;try {HttpURLConnection urlConnection = (HttpURLConnection) new URL(url).openConnection();urlConnection.setRequestMethod("GET");urlConnection.setConnectTimeout(10 * 1000);File file = new File(path);//文件夹是否存在if (!file.getParentFile().exists())file.getParentFile().mkdir();if (file.exists())file.delete();file.createNewFile();int responseCode = urlConnection.getResponseCode();if (responseCode >= 200 && responseCode < 300) {inputStream = urlConnection.getInputStream();int len = 0;byte[] data = new byte[4096];//用于保存当前进度(具体进度)int progres = 0;//获取文件长度int maxProgres = urlConnection.getContentLength();randomAccessFile = new RandomAccessFile(file, "rwd");//设置文件大小randomAccessFile.setLength(maxProgres);//将文件大小分成100分,每一分的大小为unitint unit = maxProgres / 100;//用于保存当前进度(1~100%)int unitProgress = 0;while (-1 != (len = inputStream.read(data))) {randomAccessFile.write(data, 0, len);progres += len;//保存当前具体进度int temp = progres / unit; //计算当前百分比进度if (temp >= 1 && temp > unitProgress) {//如果下载过程出现百分比变化unitProgress = temp;//保存当前百分比System.out.println("正在下载中..." + unitProgress + "%");}}inputStream.close();System.out.println("下载完成...");} else {System.out.println("服务器异常...");}} finally {if (null != inputStream) {inputStream.close();}if (null != randomAccessFile) {randomAccessFile.close();}}}public static void main(String[] args) throws IOException {String path = "D:\\abc\\image.jpg";String url="http://www.dowei.com/d/file/tuku/meinv/2016-01-26/1453788622507000.jpg";dowanload(url, path);}
}

       下面是显示的效果:

             

      如果想把这个效果做到前端,还需要前台js的控制,这个最近正在研究,应该会很简单,做好之后再添加到这篇博客中,咱们共同分享。

这篇关于文件下载显示进度条的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107869

相关文章

idea粘贴空格时显示NBSP的问题及解决方案

《idea粘贴空格时显示NBSP的问题及解决方案》在IDEA中粘贴代码时出现大量空格占位符NBSP,可以通过取消勾选AdvancedSettings中的相应选项来解决... 目录1、背景介绍2、解决办法3、处理完成总结1、背景介绍python在idehttp://www.chinasem.cna粘贴代码,出

SpringBoot返回文件让前端下载的几种方式

《SpringBoot返回文件让前端下载的几种方式》文章介绍了开发中文件下载的两种常见解决方案,并详细描述了通过后端进行下载的原理和步骤,包括一次性读取到内存和分块写入响应输出流两种方法,此外,还提供... 目录01 背景02 一次性读取到内存,通过响应输出流输出到前端02 将文件流通过循环写入到响应输出流

前端Visual Studio Code安装配置教程之下载、汉化、常用组件及基本操作

《前端VisualStudioCode安装配置教程之下载、汉化、常用组件及基本操作》VisualStudioCode是微软推出的一个强大的代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,... 目录一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2

Python包管理工具uv下载python版本慢问题解决办法

《Python包管理工具uv下载python版本慢问题解决办法》uv是一个非常快的Python包和项目管理器,用Rust编写,使用热缓存安装Trio的依赖项的速度对比,:本文主要介绍Python包... 目录发现问题对于 MACOS / linux 用户 (zsh/bash):对于 Windows 用户:总

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

Python多线程实现大文件快速下载的代码实现

《Python多线程实现大文件快速下载的代码实现》在互联网时代,文件下载是日常操作之一,尤其是大文件,然而,网络条件不稳定或带宽有限时,下载速度会变得很慢,本文将介绍如何使用Python实现多线程下载... 目录引言一、多线程下载原理二、python实现多线程下载代码说明:三、实战案例四、注意事项五、总结引

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各