今天跟大家聊聊使用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
进行了打包,并生成javadoc,方便使用. 该包封装过的NIO比sun本身的更容易处理 server中只有区区几行就搞定了: //创建listener TimeHandler timer = new TimeHandler(); //获取Notifier Notifier notifier = Notifier....
下载文件的基本原理 Java中的文件下载是通过输入输出流实现的,将远程...Java中可以使用ZipOutputStream类将多个文件压缩成一个zip包,首先创建ZipOutputStream对象,然后逐个添加需要压缩的文件,最后关闭流即可。
解决ZipOutputStream压缩包内中文文件名乱码的问题,setEncoding("GBK")
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...
查询出图片的url集合,循环获取图片的流。下载后打包成zip文件,然后将zip包文件进行下载。ZipOutputStream
ZipOutputStream 压缩 乱码
Java I/O类库还收录了一些能读写压缩格式流的类。要想提供压缩功能,只要把它们包在已有的I/O类的外面就行了。这些类不是Reader和Writer,而是InputStream和OutStreamput的子类。这是因为压缩算法是针对byte而不是...
有些时候需要替换zip内的文件。 网上的办法大多是——先解压,然后对解压目录替换文件,最后再重新压缩。该办法需要比较繁琐,且需要一个临时目录...后来找到利用 ZipInputStream、ZipOutputStream 实现该功能的办法。
主要功能包括通过HTTP响应将多个文件打包成zip压缩包,并提供给用户一次性下载。以下是代码的主要功能点: 1.文件模拟数据:使用Map模拟了一组文件,其中包含文件的在线URL和相应的目标路径。 2.设置响应头:在处理...
NULL 博文链接:https://x1ng-ms.iteye.com/blog/1118908
import java.util.zip.ZipOutputStream; public class Zip { static final int BUFFER = 2048; public static void main(String argv[]) { try { BufferedInputStream origin = null; ...
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.util.zipoutputstream压缩会出现中文的文件名乱码的情况,且无法设置字符集,这个版本用org.apache.tools.zip.ZipOutputStream压缩,可以自定义字符集,解决中文的文件名乱码问题。
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中通过ZipOutputStream和ZipInputStream实现了zip压缩和解压功能。java源码————资源共享,一起进步。
加密压缩 解密解压 java编写 不需jdk环境 exe双击即可运行
使用java压解有中文字符的文件乱码,apache项目中的ant.jar包可完美解决此问题,代码是用eclipse项目,项目下有ant.jar包,使用前请把ant.jar包导入.
packer-ng-plugin 是下一代Android渠道打包工具Gradle插件,支持极速打包,1000个渠道包只需要5秒钟,速度是 gradle-packer-plugin 的1000倍以上,可方便的用于CI系统集成,支持自定义输出目录和最终APK文件名,依赖...
压缩的实现比较容易,下面介绍利用ZipEntry、ZipInputStream和ZipOutputStream三个Java 类实现zip数据压缩方式的编程方法。 zip压缩文件结构:一个zip文件由多个entry组成,每个entry有一个唯一的名称,entry的 ...