java基础入门-ZipOutputStream打包下载

原创 2015年07月09日 10:29:54

今天跟大家聊聊使用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<String> filePathList) throws ServletException,
			IOException {
		// 头文件
		resp.setContentType("APPLICATION/OCTET-STREAM");
		resp.setHeader("Content-Disposition",
				"attachment; filename=" + this.getZipFilename());

		// 压缩文件
		ZipOutputStream zos = new ZipOutputStream(resp.getOutputStream());
		// --拼装
		ArrayList<File> fileList = new ArrayList<File>();
		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;
	}



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

通过ZipOutputStream压缩文件夹中的文件

package io.steveguoshao.rms.common.util; import java.io.BufferedInputStream; import java.io.Buffere...
  • steveguoshao
  • steveguoshao
  • 2014年12月08日 16:32
  • 5591

ant.jar org.apache.tools.zip.ZipOutputStream

  • 2011年03月01日 17:30
  • 1010KB
  • 下载

org.apache.tools.zip.*需要的jar包

  • 2012年03月14日 14:14
  • 1.26MB
  • 下载

多线程实现文件备份和文件压缩

package com.xiancheng.test; import java.io.IOException; public class XianChen { public static S...
  • myjlvzlp
  • myjlvzlp
  • 2014年04月23日 18:22
  • 1957

JAVA 文件处理 压缩文件或文件夹 ZipOutputStream ZipEntry 文件处理

参考地址:http://www.blogjava.net/lhbjava/archive/2012/03/20/226363.html 在此基础上又进行了扩展压缩多文件和文件夹,(我放到了我的工具类F...
  • tengyuantuohai
  • tengyuantuohai
  • 2014年01月01日 18:31
  • 1644

java将多个文件一起打成zip包下载

两种方式 1.使用临时文件下载的方式 //文件打包下载     public static HttpServletResponse downLoadFiles(List fi...
  • truelove12358
  • truelove12358
  • 2015年10月12日 15:21
  • 3914

Java IO操作——掌握压缩流的使用(ZipOutputStream、ZipFile、ZipInputStream)[java.util包中]

学习目标  了解压缩流的主要作用  了解JAVA IO支持的三种压缩格式  掌握ZipOutputStream、ZipFile、ZipInputStream三个类的使用 压缩文件大致可以分为三种:ZI...
  • u013087513
  • u013087513
  • 2016年08月10日 14:05
  • 10308

ZipOutputStream

  • 2011年08月02日 10:21
  • 1010KB
  • 下载

org.apache.tools.zip 的jar包

  • 2014年08月18日 16:57
  • 1.26MB
  • 下载

使用apache的ZipOutputStream进行zip文件压缩

需要用java写一个文件压缩的程序,一开始准备用java库中的java.util.zip.ZipOutputStream,但是一搜,发现有中文乱码的问题,所以就用了org.apache.tools.z...
  • xueyepiaoling
  • xueyepiaoling
  • 2011年01月06日 11:58
  • 13103
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java基础入门-ZipOutputStream打包下载
举报原因:
原因补充:

(最多只允许输入30个字)