java基础入门txt下载地址_java基础入门-ZipOutputStream打包下载

今天跟大家聊聊使用ZipOutputStream打包下载,我下面是使用ant的jar打包的,因为他对应中文的支持比较好

大家也可以使用java.util.zip包里面的工具类打包,但是他对于中文不友好,很多都是乱码的(包括注释、文件名、打包名)

import org.apache.tools.zip.ZipEntry;

import org.apache.tools.zip.ZipOutputStream;

/**

* 打包下载

*

* @param response

*/

private void downFile(HttpServletResponse resp,

ArrayList filePathList) throws ServletException,

IOException {

// 头文件

resp.setContentType("APPLICATION/OCTET-STREAM");

resp.setHeader("Content-Disposition",

"attachment; filename=" + this.getZipFilename());

// 压缩文件

ZipOutputStream zos = new ZipOutputStream(resp.getOutputStream());

// --拼装

ArrayList fileList = new ArrayList();

for (int i = 0; i < filePathList.size(); i++) {

File file = new File(filePathList.get(i));

fileList.add(file);

}

File[] files = fileList.toArray(new File[fileList.size()]);

// --打包

zipFile(files, "", zos);

zos.flush();

zos.close();

}/**

* 打包文件

*

* @param subs

* 文件数组

* @param baseName

* 自定义名字

* @param zos

* 输出流

* @throws IOException

*/

private void zipFile(File[] subs, String baseName, ZipOutputStream zos)

throws IOException {

for (int i = 0; i < subs.length; i++) {

File f = subs[i];

zos.putNextEntry(new ZipEntry(baseName + f.getName()));

FileInputStream fis = new FileInputStream(f);

byte[] buffer = new byte[1024];

int r = 0;

while ((r = fis.read(buffer)) != -1) {

zos.write(buffer, 0, r);

}

fis.close();

}

}

/**

* 压缩包名字

*

* @return

*/

private String getZipFilename() {

Date date = new Date();

String s = date.getTime() + ".zip";

return s;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值