java下载多个文件,可以先把多个文件打包压缩成 zip 文件,然后下载zip文件
代码如下:
/** * 生成zip * @param sourcePath 原文件夹路径 * @param zipPath 生成的zip路径 */ public static void createZip(String sourcePath, String zipPath) { FileOutputStream fos = null; ZipOutputStream zos = null; try { fos = new FileOutputStream(zipPath); zos = new ZipOutputStream(fos); writeZip(new File(sourcePath), "", zos); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { try { if (zos != null) { zos.close(); } } catch (IOException e) { e.printStackTrace(); } } } private static void writeZip(File file, String parentPath, ZipOutputStream zos) { if(file.exists()){ if(file.isDirectory()){//处理文件夹 parentPath+=file.getName()+File.separator; File [] files=file.listFiles(); for(File f:files){ writeZip(f, parentPath, zos); } }else{ FileInputStream fis=null; DataInputStream dis=null; try { fis=new FileInputStream(file); dis=new DataInputStream(new BufferedInputStream(fis)); ZipEntry ze = new ZipEntry(parentPath + file.getName()); zos.putNextEntry(ze); zos.setEncoding("GBK"); byte [] content=new byte[1024]; int len; while((len=fis.read(content))!=-1){ zos.write(content,0,len); zos.flush(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ try { if(dis!=null){ dis.close(); } }catch(IOException e){ e.printStackTrace(); } } } } }
调用方法:
.createZip(FilePath+fileNameAll, FilePath+fileNameAll+".zip");
接下来就是下载:
/** * 下载公共方法 * @param response * @param str 下载的文件名 */ private void downFile(HttpServletResponse response, HttpServletRequest request,String str) { try { String FilePath = request.getSession().getServletContext().getRealPath(File.separator); String path = FilePath + str; File file = new File(path); if (file.exists()) { InputStream ins = new FileInputStream(path); BufferedInputStream bins = new BufferedInputStream(ins);// 放到缓冲流里面 OutputStream outs = response.getOutputStream();// 获取文件输出IO流 BufferedOutputStream bouts = new BufferedOutputStream(outs); response.setContentType("application/x-download");// 设置response内容的类型 response.setHeader( "Content-disposition", "attachment;filename=" + URLEncoder.encode(str, "UTF-8"));// 设置头部信息 int bytesRead = 0; byte[] buffer = new byte[8192]; // 开始向网络传输文件流 while ((bytesRead = bins.read(buffer, 0, 8192)) != -1) { bouts.write(buffer, 0, bytesRead); } bouts.flush();// 这里一定要调用flush()方法 ins.close(); bins.close(); outs.close(); bouts.close(); } else { } } catch (IOException e) { } }
相关推荐
文档批量下载器,资料搜索下载文档,根据关键字搜索并下载文档
星期八文档批量下载工具是一款功能强大、便捷实用的文档下载软件,软件专为星期八网站用户设计,能够自动搜索采集下载文档。软件方便简单,可以免费下载所有文档,需要的话可以来下载使用。 功能特点 1、具有强大...
该工具用来批量下载小密圈中的文件,并支持断点续传。
文件批量下载/解压程序 将批量文件从网上下载回来,根据需要解压在某些路径下。 代码很简单,设计了两个线程类,下载线程和解压线程。 运用的三方VCL有。 Indy(D2K7自带)VclZip Siow_OBRAR_v0.04 Win2K3 + D...
把全部Url资源地址放到记事本里一次性批量下载,存放地址每行一条,多线程下载,有进度条提示
文件批量下载工具(高速下载版)
文档批量下载工具《老牛下书》最新版 全自动搜索并下载文档
batchurldown_网址文件批量下载软件
URL文件批量下载工具,使用说明查看readme
批量 按照M3U8 最多50线程 下载TS文件。 1.网页打开视频后 按F12 找到M3U8文件 下载到本地。 2.找到一个*.ts文件的真实路径, 如 http://1.1.1.1/a/b/c/001.ts 和 http://1.1.1.1/a/b/c/002.ts 则 ...
软件联盟文件批量下载器v1.0可以用来批量下载多个文件,通过设置文件下载地址和文件下载保存路径,可以同时添加多个文件下载任务,工具类似于IE浏览器的下载工具,对于需要从网页下载多个网页文件的用户,可以在一个...
本篇文章主要介绍了JAVA SFTP文件上传、下载及批量下载实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
可以搜索QQ群文件(原群共享) 可以搜索你所登录的QQ号中所有的QQ群,搜索到之后可以批量下载 登录的时候可以直接使用QQ的一键登录,不需要手工输入账号密码。
文件批量下载解压程序的代码范例 uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,WebCopy, Grids, StdCtrls, ComCtrls, IniFiles, VCLUnZip, IdBaseComponent, IdComponent, ...
asp.net批量下载文件
易语言文件批量下载源码
这段Spring Boot代码展示了如何实现文件的批量下载与压缩。主要功能包括通过HTTP响应将多个文件打包成zip压缩包,并提供给用户一次性下载。以下是代码的主要功能点: 1.文件模拟数据:使用Map模拟了一组文件,其中...
本软件用于批量采集网络共享免费文档,然后批量下载,下载完全免费。可用于文档出售,外链制作用。
iShare-Doc用于新浪爱问资料库的文档批量下载工具.
java批量下载文件,下载完成后打包到zip文件的代码