批量下载_Zip压缩包的方式

本文探讨通过ZipOutputStream批量下载文件的方法,避免了不同浏览器兼容性问题。内容包括为何选择zip打包方式以及如何利用Apache的ant包进行操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、说明

对于文件批量下载一般有两种方式,单个循环和zip压缩包的方式,第一种方式可能会因不同的浏览器有不同的效果,此处指讨论第二种方式。

下文注释中提到的apache的zip打包api在ant包中,但这个jar包将近1M着实有点大。

<dependency>
	<groupId>ant</groupId>
	<artifactId>ant</artifactId>
	<version>1.6.5</version>
</dependency>

二、示例程序

package tt;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class Test {
	public static void main(String[] args) {
		Test ts =  new Test();
		ts.zipFile();
	}
	public void zipFile() {
		try {
			//ByteArrayOutputStream bytyOut = new ByteArrayOutputStream();
			FileOutputStream fileOut = new FileOutputStream("d:\\zip.zip");
			ZipOutputStream zipOut = new ZipOutputStream(fileOut);//bytyOut
			File[] selectedFiles = { new File("d:\\aa.txt"), new File("d:\\bb.txt") };
			byte[] buffer = new byte[1024];
			for (File file : selectedFiles) {
				FileInputStream fileIn = new FileInputStream(file);
				if (fileIn != null) {
					//注意:此处的文件名如果为中文,在不同编码的环境下可能会出现文件名乱码的问题,
					//建议使用apache的zip功能,不要使用jdk(我的是1.6)自带的
					zipOut.putNextEntry(new ZipEntry(file.getName()));
					int len;
					// 读入需要下载的文件的内容,打包到zip文件
					while ((len = fileIn.read(buffer)) > 0) {
						zipOut.write(buffer, 0, len);
					}
					zipOut.closeEntry();
					fileIn.close();
				}
			}
			zipOut.close();
			fileOut.flush();
			fileOut.close();
			//byte[] data = bytyOut.toByteArray();
			//ByteArrayInputStream byteIn = new ByteArrayInputStream(data);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值