java文件压缩
来源:互联网 发布:上海医药 知乎 编辑:程序博客网 时间:2024/06/05 03:53
使用java基本的zip库可以进行压缩,但是不支持中文文件名,会出现乱码,这里使用apache tools下的ant.jar可以解决这个问题。
压缩工具类ZipUtil代码:
package com.home;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.util.zip.Adler32;import java.util.zip.CheckedOutputStream;import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipOutputStream;public class ZipUtil {/** * 提供给外部压缩调用 * * @param src * @param des * @throws IOException */public static void zip(String src, String des) throws IOException {ZipOutputStream out = null;try {CheckedOutputStream cos = new CheckedOutputStream(new FileOutputStream(des), new Adler32());out = new ZipOutputStream(new BufferedOutputStream(cos));out.setEncoding("GBK");zip(new File(src), out, "");} finally {if (out != null) {out.close();}}}/** * 压缩文件 * * @param file * @param out * @param base * @throws IOException */private static void zip(File file, ZipOutputStream out, String base)throws IOException {if (file.isFile()) {if (base.length() > 0) {out.putNextEntry(new ZipEntry(base));} else {out.putNextEntry(new ZipEntry(file.getName()));}BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "ISO8859_1"));int len;while ((len = br.read()) != -1) {out.write(len);}br.close();} else if (file.isDirectory()) {File[] subFiles = file.listFiles();out.putNextEntry(new ZipEntry(base + File.separator));base = base.length() != 0 ? base + File.separator : "";if (subFiles != null) {for (File subFile : subFiles) {zip(subFile, out, base + subFile.getName());}}}}}
测试类Test:
package com.home;public class Test {/** 源文件夹路径 */private String folderSrcPath = "D://test//测试文件夹";/** 压缩后的zip文件存放路劲 */private String forderDesPath = "D://test//test1.zip";/** 源文件路径 */private String fileSrcPath = "D://test//测试.pdf";/** 压缩后的zip文件存放路劲 */private String fileDesPath = "D://test//test.zip";public Test() {try {ZipUtil.zip(folderSrcPath, forderDesPath);ZipUtil.zip(fileSrcPath, fileDesPath);} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {new Test();}}
点击下载ant.jar
0 0
- Java中的文件压缩
- Java压缩zip文件
- java 实现文件压缩
- java多线程文件压缩
- JAVA 压缩解压文件
- java压缩单个文件
- java 文件压缩 GZIP
- java压缩文件夹/文件
- java 压缩解压缩文件
- java文件压缩
- java文件压缩二
- java文件压缩四
- java文件读写、压缩
- Java 文件压缩
- java压缩、解压缩文件
- java压缩zip文件
- java 文件的压缩
- JAVA文件压缩、解压
- javascript基础知识梳理-Number与String之间的互相转换
- 如何发布你的Android应用程序
- 整数中二进制1的个数
- gradle 编译失败,出现 permgen space的问题
- 在ubuntu10.04环境下安装mkvtoonix
- java文件压缩
- Linux访问Windows共享文件夹
- 《算法导论》笔记 第8章 8.1排序算法时间的下界
- 你了解Arrays.binarySearch()方法的返回值吗?
- Linux中exec命令相关
- linux下oracle sqlplus退格方向键失效解决办法-rlwrap
- android中关于实现小米消息推送
- printf GCC、ICC下可以用了
- 基于简单的路径压缩的并查集算法