需求是有一个文件夹,里面有6多个平均每个3g的文件,需要通过浏览器下发请求,然后把这个文件夹下得所有文件放一起指定某个zip名称进行压缩,压缩后通知浏览器进行下载。
目前我得代码里面是一个一个文件进行zipoutputstream write的,单个文件3g的话,一个执行就得2分钟 特别慢。
在此求快速压缩的方式
java实现单个大文件 约3g一个 压缩成zip 然后返回给浏览器下载
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
14条回答 默认 最新
关注 题主,这个需求我可以帮你写一个。如下是我写的压缩zip教程,可以看下,若有帮助,还望采纳,点击回答右侧采纳即可。
核心压缩工具类方法如下:
/** * 将一个文件写入压缩包(一次只压缩一次) * * @param filePath 文件路径 * @param zipOut 压缩路径 */ public void fileToZip(String filePath, ZipOutputStream zipOut) throws IOException { // 需要压缩的文件 File file = new File(filePath); // 获取文件名称,如果有特殊命名需求,可以将参数列表拓展,传fileName String fileName = file.getName(); FileInputStream fileInput = new FileInputStream(filePath); // 缓冲 byte[] bufferArea = new byte[1024 * 10]; BufferedInputStream bufferStream = new BufferedInputStream(fileInput, 1024 * 10); // 将当前文件作为一个zip实体写入压缩流,fileName代表压缩文件中的文件名称 zipOut.putNextEntry(new ZipEntry(fileName)); int length = 0; // 最常规IO操作,不必紧张 while ((length = bufferStream.read(bufferArea, 0, 1024 * 10)) != -1) { zipOut.write(bufferArea, 0, length); } //关闭流 fileInput.close(); // 需要注意的是缓冲流必须要关闭流,否则输出无效 bufferStream.close(); // 压缩流不必关闭,使用完后再关 }
解决 1无用
悬赏问题
- ¥15 Stata链式中介效应代码修改
- ¥15 latex投稿显示click download
- ¥15 请问读取环境变量文件失败是什么原因?
- ¥15 在若依框架下实现人脸识别
- ¥15 添加组件无法加载页面,某块加载卡住
- ¥15 网络科学导论,网络控制
- ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
- ¥15 metadata提取的PDF元数据,如何转换为一个Excel
- ¥15 关于arduino编程toCharArray()函数的使用
- ¥100 vc++混合CEF采用CLR方式编译报错