首页
学习
活动
专区
圈层
工具
发布

Android原生下载(下篇)多文件下载+多线程下载

零、前言 1.上篇实现了单线程的单文件下载,本篇将讲述多文件的多线程下载,在此之前希望你先弄懂上篇 2.本篇将用到上篇之外的技术: 多线程、线程池(简)、RecyclerView、数据库多线程访问下的注意点...动态效果图.gif ---- 一、分析一下多线程下载单个文件的原理: 1.线程分工方式 大家都知道,一个文件是很多的字节组成的,字节又是由二进制的位组成,如果把一个字节当成一块砖。...多线程下载分析.png 2.多线程下载的流程图 整体架构和单线程的下载类似,最大的改变的是: 由于多线程需要管理,使用一个DownLoadTask来管理一个文件的所有下载线程,其中封装了下载和暂停逻辑...: DownLoadTask最重要的在于:管理一个文件下载的所有线程,download是暴漏出的下载方法。...由于多文件,维护一个Task集合:使用SparseArray存储int型的键---的键值对 private SparseArray mTaskMap = new SparseArray

16.1K51
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java实现多文件压缩下载

    最近遇到的一个需求,记录一下解决方案~ 需求分析 权限审批项目中有个场景是页面上展示多个附件,点击全部下载是下载全部文件,并将其下载成压缩包。...image.png 页面上展示的应该是多个链接,到时让前端传多个链接,后台进行获取文件服务器的文件进行压缩处理,再进行下载。 这里我选的是边压缩 ZIP 格式文件边下载(直接输出ZIP流)。...(new File("D:\\data\\test.png")); files.add(new File("D:\\data\\Test.pdf")); // 检查需要下载多文件列表中文件路径是否都存在...,这里,加上i是防止要下载的文件有重名的导致下载失败 zipOutStream.putNextEntry(new ZipEntry(i+ "-" + fileName))...Copyright: 采用 知识共享署名4.0 国际许可协议进行许可 Links: https://lixj.fun/archives/java实现多文件压缩下载

    1.8K10

    SpringMVC单文件上传、多文件上传、文件列表显示、文件下载

    转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传、多文件上传、文件列表显示、文件下载。...四、多文件上传 (1)控制器 [html] view plain copy @RequestMapping("/toFile2")   public String toFileUpload2...           while ((len = in.read(buffer)) > 0) {               // 输出缓冲区的内容到浏览器,实现文件下载               ...           out.close();       } catch (Exception e) {       }   }   这里就是通过文件流的方式来下载图片的。...然后就可以自己选择下载的地方了。 ? 终于讲完了,花了大半天啊! 本文工程免费下载 林炳文Evankaka原创作品。

    3K10

    Javascript将HTML转成PDF并下载「支持多页」

    HTML转化成PDF 如何把HTML页面转化成PDF文件并下载呢?这篇文章给你答案,使用Javascript 将html转成pdf下载,并且支持多页。...使用 使用的API也很简洁,下面代码可以将某个元素渲染成canvas: html2canvas(element, { onrendered: function(canvas) {...你可以试试,验证一下自己的想法: demo6 linwalker.github.io/render-html-to-pdf/demo6.html jsPDF其实为我们提供了一个很有用的API,addPage...累的话 :)可以看看下面这种方法 多页 我提供的思路是我们只生成一个canvas,对就一个,转化元素就是你要转成pdf内容的母元素,在这篇demo里就是body了;其他不变,也是超过一页内容就addPage...当然这样做只会出现多页重复的pdf,那到底怎么实现正确分页显示。

    4.3K20

    Django 实现文件上传下载API

    Django 实现文件上传下载API by:授客 QQ:1033553122 欢迎加入全国软件测试交流QQ群:7156436 开发环境 Win 10 Python 3.5.4 Django-2.0.13...file_absolute_path + '/' + file_name file_handler = open(file_absolute_path, 'wb') # 打开特定的文件进行二进制的写操作...,是因为如果文件比较大,一次性读取过多内容,会占用系统过多的内存,进而让系统变得更低效。...默认的chunks分块默认值为2.5M file = files.get('file')# 注意:这里的字典key'file'要和前端提交form表单请求时,文件对象对应的表单key保持一致,前端代码如下...,对文件名进行编码,编码后,前端获取的文件名称形如“%E5%AF%BC%E5%87%BA%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B”

    2.3K31

    支持多JDK版本下运行的Jar文件打包方式

    本文内容:在Java 9增强了JAR多版本字节码文件格式的支持,同一个Jar包可以包含多个Java版本的class文件。...一、基本使用方法 多版本的字节码发行jar包,需要在其MANIFEST.MF中做以下的声明: Multi-Release: true 在jar包的META-INF/versions文件目录里面可以包含多个版本的...- A.class 假设上文中的根目录是使用java 8 或之前版本编译的字节码文件A.calss。...如果jar包是在JDK 8的运行时环境下运行,将使用根目录下面的class文件进行程序运行。...编译 将Java8 、Java9的IOUtil.java代码分别在JDK8、JDK9的版本下分别编译成class字节码文件,并将class文件按照如下的目录结构打成保存,并打jar包。

    2.9K20

    IDM 下载器怎么下载网盘文件 IDM 下载器支持哪些网盘

    有关 IDM 下载器如何下载网盘文件,IDM 下载器支持哪些网盘的问题,本文将进行详细操作演示。...打开脚本列表,搜索关键词“网盘直链下载助手”,安装网盘文件直链解析脚本。完成以上操作后,打开百度网盘文件列表。勾选需要下载的文件,点击左上角的“下载助手”按钮,选择“API 下载”。...二、IDM 下载器支持哪些网盘经本人实测,除了百度网盘以外,IDM 还可以下载很多其他网盘中的文件。...1.IDM 下载阿里云盘文件打开阿里云盘文件列表,选择文件并点击右上角的“下载助手”按钮。在解析列表中,选择“API 下载”。...3.IDM 下载迅雷云盘文件打开迅雷云盘的文件列表,选择文件并点击左上角的“下载助手”按钮。在解析列表中,选择“API 下载”。点击“直链地址”后,IDM 的下载信息窗口便会自动弹出。

    1.3K10

    一个支持多协议、多源和混合p2p-cdn下载器

    概述内容 框架简介 PearDownloader(梨享下载器) 是PearPlayer的底层下载模块, 实现了融合HTTP(包含HTTPS、HTTP2)、WebRTC的多协议、多源、低延迟、高带宽利用率的无插件...Web端下载加速能力。...特性 P2P能力基于国际标准的WebRTC,无须安装任何客户端或插件 多协议(HTTP, HTTPS, WebRTC)、多源 多源传输能力支持目前所有已知主流浏览器(当浏览器不支持WebRTC时全调度...HTTP节点) 通过浏览器内核的MSE,可支持音视频的边下边播 自研的调度算法,在保证下载速度的前提下最大化P2P率(用户亦可实现自己的调度算法,以满足不同场景需求) 默认无需填参数(内部根据文件属性作自适应...下载地址 https://gitee.com/PearInc/PearDownloader.js.git

    1.5K20

    js不借助后端,多文件拖拽压缩上传,支持选择文件夹

    在系统中上传文件时,需要支持多文件和文件夹上传,并且需要在文件上传时需要将多文件压缩成zip包,下载的时候,直接下载zip包 听到这个需求,我的第一反应就是js应该没有强大吧,因为压缩和访问文件夹,涉及到了文件系统的读取和修改...主要用到的库是 jszip 则 则这里简单对jszip做下简单介绍,更详细的功能和api请移步官网. jszip是是一个创建,读取和写入.zip文件的js库, api优化,简单 浏览器支持 实现思路如下...: 1:用户选中文件或文件夹后,获取文件对象, 2:遍历获取的文件对象 放入实例化的zip对象中 3:使用generateAsync()方法生成文件, 通过formdata提交到服务端 代码如下: 此案例支持拖拽上传多个文件...jszip库的常用api是这两个 file(name, data [,options]) :创建zip文件,可以放入多个文件,支持多种文件格式String/ArrayBuffer/Uint8Array...能不能做,要想看这个库的api具不具备将文件转化为zip文件,通过以上两个api,可以得知这个库是支持的. jszip库api 另外jszip库也支持读取本地和远程的zip文件返回内部文件目录,文件名.

    3.9K10
    领券