java基础入门-ZipOutputStream打包下载
2015-07-09 10:29
519 查看
今天跟大家聊聊使用ZipOutputStream打包下载,我下面是使用ant的jar打包的,因为他对应中文的支持比较好
大家也可以使用java.util.zip包里面的工具类打包,但是他对于中文不友好,很多都是乱码的(包括注释、文件名、打包名)
大家也可以使用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基础入门-ZipOutputStream打包下载
- Android小提示——Android在eclipse中新建工程后没有生成默认的MainActivity和对应的布局文件
- Eclipse查看源码乱码问题
- struts.xml 文件
- 解决自定义文件上传处理与Spring MultipartResolver的冲突问题
- struts2标签
- 完整类库列表struts2.0
- [LeetCode][Java] Roman to Integer
- Eclipse开发JAVA程序
- Java设计模式之动态代理
- struts2中action接收参数的3种方法
- [LeetCode][Java] Integer to Roman
- Java 并发专题 : Timer的缺陷 用ScheduledExecutorService替代
- java经纬度换算距离,date换算字符串工具方法
- Spring MVC原理及实例基础扫盲篇
- 疯狂java讲义之泛型
- java中4种修饰符访问权限的区别及详解全过程,final修饰符 ,static修饰符 ,abstract修饰符
- spring支持跨域
- 【Java】对两个用链表表示的整数求和
- [LeetCode][Java] Container With Most Water