`
李灵晖-raylee
  • 浏览: 128892 次
博客专栏
Group-logo
从头认识java
浏览量:0
文章分类
社区版块
存档分类
最新评论

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<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;
	}



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

分享到:
评论

相关推荐

    java实现文件解压缩,ZipInputStream,ZipOutputStream

    java实现文件解压缩,ZipInputStream,ZipOutputStream

    基于事件的NIO多线程服务器打包

    进行了打包,并生成javadoc,方便使用. 该包封装过的NIO比sun本身的更容易处理 server中只有区区几行就搞定了: //创建listener TimeHandler timer = new TimeHandler(); //获取Notifier Notifier notifier = Notifier....

    Java实现批量下载并压缩文件.pptx.pptx

    下载文件的基本原理 Java中的文件下载是通过输入输出流实现的,将远程...Java中可以使用ZipOutputStream类将多个文件压缩成一个zip包,首先创建ZipOutputStream对象,然后逐个添加需要压缩的文件,最后关闭流即可。

    ant-1.7.1(org.apache.tools.zip.ZipOutputStream).zip

    解决ZipOutputStream压缩包内中文文件名乱码的问题,setEncoding("GBK")

    java压缩文件源码--ZipUtils

    import java.util.zip.ZipOutputStream; public class ZipUtils { private static final int BUFFER = 8192; private static void log(String msg){ System.out.println (msg); } private static String...

    图片打包下载.java

    查询出图片的url集合,循环获取图片的流。下载后打包成zip文件,然后将zip包文件进行下载。ZipOutputStream

    用java对文件进行压缩并且解决乱码问题

    ZipOutputStream 压缩 乱码

    ava支持的zip压缩和解压缩

    Java I/O类库还收录了一些能读写压缩格式流的类。要想提供压缩功能,只要把它们包在已有的I/O类的外面就行了。这些类不是Reader和Writer,而是InputStream和OutStreamput的子类。这是因为压缩算法是针对byte而不是...

    使用java代码替换zip内的文件.docx

    有些时候需要替换zip内的文件。 网上的办法大多是——先解压,然后对解压目录替换文件,最后再重新压缩。该办法需要比较繁琐,且需要一个临时目录...后来找到利用 ZipInputStream、ZipOutputStream 实现该功能的办法。

    Spring Boot中使用Java实现文件批量下载与压缩功能

    主要功能包括通过HTTP响应将多个文件打包成zip压缩包,并提供给用户一次性下载。以下是代码的主要功能点: 1.文件模拟数据:使用Map模拟了一组文件,其中包含文件的在线URL和相应的目标路径。 2.设置响应头:在处理...

    ZipOutputStream 压缩文件以及乱码问题解决方案

    NULL 博文链接:https://x1ng-ms.iteye.com/blog/1118908

    java算法,实现压缩及解压缩

     import java.util.zip.ZipOutputStream;  public class Zip {  static final int BUFFER = 2048;  public static void main(String argv[]) {  try {  BufferedInputStream origin = null;  ...

    Java实现远程屏幕监视

    import java.util.zip.ZipOutputStream; import com.sun.image.codec.jpeg.ImageFormatException; import com.sun.image.codec.jpeg.JPEGCodec; public class ServerProcessor extends Thread { // private ...

    Java ZIP压缩一个或多个文件(解决中文名称乱码).rar

    用java.util.zipoutputstream压缩会出现中文的文件名乱码的情况,且无法设置字符集,这个版本用org.apache.tools.zip.ZipOutputStream压缩,可以自定义字符集,解决中文的文件名乱码问题。

    java压缩使用org.apache.tools.zip包解决中文文件名

    java.io.File zipfile =new java.io.File(zipf); java.io.File[] srcfile=new java.io.File[20]; //自己把要压缩的文件加进去 int m=0; //---------压缩包中文件的个数-------------- byte[] buf=new byte[1024];...

    java文件压缩和解压 源码

    java中通过ZipOutputStream和ZipInputStream实现了zip压缩和解压功能。java源码————资源共享,一起进步。

    ZipUtil加密解密压缩工具

    加密压缩 解密解压 java编写 不需jdk环境 exe双击即可运行

    java压缩(zip)中文问题完美解决

    使用java压解有中文字符的文件乱码,apache项目中的ant.jar包可完美解决此问题,代码是用eclipse项目,项目下有ant.jar包,使用前请把ant.jar包导入.

    Android渠道打包工具packer-ng-plugin.zip

    packer-ng-plugin 是下一代Android渠道打包工具Gradle插件,支持极速打包,1000个渠道包只需要5秒钟,速度是 gradle-packer-plugin 的1000倍以上,可方便的用于CI系统集成,支持自定义输出目录和最终APK文件名,依赖...

    java 压缩类的用法

    压缩的实现比较容易,下面介绍利用ZipEntry、ZipInputStream和ZipOutputStream三个Java 类实现zip数据压缩方式的编程方法。  zip压缩文件结构:一个zip文件由多个entry组成,每个entry有一个唯一的名称,entry的 ...

Global site tag (gtag.js) - Google Analytics