`

基于apache.tools.zip压缩文件(夹)

阅读更多

package net.szh.zip;

 

import java.io.BufferedInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.util.zip.CRC32;

import java.util.zip.CheckedOutputStream;

 

import org.apache.tools.zip.ZipEntry;

import org.apache.tools.zip.ZipOutputStream;

 

public class ZipCompressor {

static final int BUFFER = 8192;

 

private File zipFile;

 

public ZipCompressor(String pathName) {

zipFile = new File(pathName);

}

 

public void compress(String srcPathName) {

File file = new File(srcPathName);

if (!file.exists())

throw new RuntimeException(srcPathName + "不存在!");

try {

FileOutputStream fileOutputStream = new FileOutputStream(zipFile);

CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream,

new CRC32());

ZipOutputStream out = new ZipOutputStream(cos);

String basedir = "";

compress(file, out, basedir);

out.close();

} catch (Exception e) {

throw new RuntimeException(e);

}

}

 

private void compress(File file, ZipOutputStream out, String basedir) {

/* 判断是目录还是文件 */

if (file.isDirectory()) {

System.out.println("压缩:" + basedir + file.getName());

this.compressDirectory(file, out, basedir);

} else {

System.out.println("压缩:" + basedir + file.getName());

this.compressFile(file, out, basedir);

}

}

 

/** 压缩一个目录 */

private void compressDirectory(File dir, ZipOutputStream out, String basedir) {

if (!dir.exists())

return;

 

File[] files = dir.listFiles();

for (int i = 0; i < files.length; i++) {

/* 递归 */

compress(files[i], out, basedir + dir.getName() + "/");

}

}

 

/** 压缩一个文件 */

private void compressFile(File file, ZipOutputStream out, String basedir) {

if (!file.exists()) {

return;

}

try {

BufferedInputStream bis = new BufferedInputStream(

new FileInputStream(file));

ZipEntry entry = new ZipEntry(basedir + file.getName());

out.putNextEntry(entry);

int count;

byte data[] = new byte[BUFFER];

while ((count = bis.read(data, 0, BUFFER)) != -1) {

out.write(data, 0, count);

}

bis.close();

} catch (Exception e) {

throw new RuntimeException(e);

}

}

}

1
2
分享到:
评论

相关推荐

    org.apache.tools.zip.*文件打包需要的jar包

    import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; import org.apache.tools.zip.ZipOutputStream;...需要的jar包,压缩zip包和解压zip包,远程打包,文件批量下载、文件批量上传

    org.apache.tools.zip解决解压乱码问题

    import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; import org.apache.tools.zip.ZipOutputStream; /** * * 类名: ZipUtil.java * 描述:压缩/解压缩zip包处理类 * 创建...

    java压缩中文处理使用org.apache.tools.zip已经打包成jar

    java压缩中文处理使用org.apache.tools.zip已经打包成jar 只要放在LIB文件夹下,然后在JSP 或 JAVA 里引用即可。 &lt;%@ page language="java" import="java.sql.*,java.io.*,org.apache.tools.zip.Zip" pageEncoding=...

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

    http://mirror.bjtu.edu.cn/apache//ant/source/apache-ant-1.8.2-src.zip 使用我自己包,直接放到WEB-INF\classes下解压即可, 在程序中加上 outf.setEncoding("gbk");即可 下面是我的多个文件压缩成一个的压缩...

    org.apache.tools.zip

    java 程序编写文件压缩成zip 和解压zip文件

    java ant包中的org.apache.tools.zip实现压缩和解压缩实例详解

    主要介绍了java ant包中的org.apache.tools.zip实现压缩和解压缩实例详解的相关资料,需要的朋友可以参考下

    org.apache.tools.jar

    解决压缩中文名乱码的jar包

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

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

    文件zip压缩实现类

    java实现zip文件压缩,通过org.apache.tools.zip这个工具包实现。

    apache压缩文件

    最新版本maven,比较好用,最新版本maven,比较好用,最新版本maven,比较好用,

    解压zip压缩文件,支持多文件目录解压,中文乱码问题

    在使用Java对ZIP压缩文件进行解压的方式中有两种,一种是使用apache提供的ant.jar工具包,但是如果ZIP文件中含有中文名称的文件,在解压后,文件名将出现乱码,另一种是使用Java自身JDK中java.util.zip包下工具类,...

    apache zip 压缩源码

    我之前上传的资源中有一个 org.apache.tools.zip 的 jar包, 但是那个jar包不支持 自动检测 zip内部文件名的GBK 编码, 现在上传的这个 压缩源码, 可以做动自动检测。 并且这个源码,也可以用在 Android平台, 亲测...

    tools and ant jar

    tools and ant jar, 用于压缩文件,解压文件的java工具类,使用方法有对应的博客。

    java文件压缩源码

    压缩文件的通用工具类-采用ant中的org.apache.tools.ant.taskdefs.Zip来实现。

    java工具类:文件操作工具类.java

    * @param out org.apache.tools.zip.ZipOutputStream * @param file 待压缩的文件 * @param base 压缩的根目录 */ private static void zip(ZipOutputStream out, File file, String base) throws ...

    android解压zip乱码处理(包括ant瘦身后的jar)

    在android开发中,有时候需要将文件打包成zip或将zip解压,如果直接用java.util.zip包下面的类会出现中文乱码,如果直接用org.apache.tools.zip(ant包中的压缩功能)会影响项目的编译时间; 故将ant包中文件瘦身,既...

    Android SDK开发包国内官网下载地址.pdf

    不知道是因为最近kaihui还是怎么的,打开android sdk官方网站特别的慢,想下载最新版本的platform几乎变成不可能完成的任务,不知道为什么Google不像Apache那样在各国设立镜像站。为了预防今后再出现这样的情况,...

    CMS系统Rk_Cms.zip

    E:\Tools\apache-maven-3.1.1\bin注意那个分号编译说明基于mavenmvn clean package war:war运行说明初始化数据库, root密码设置为root.create database platform default character set utf8;将war放入...

    APACHE 2.2.9+TOMCAT6.0.18配置负载均衡

    TOMCAT6.0.20下载:apache-tomcat-6.0.20.zip直接解压。http://tomcat.apache.org/download-60.cgi Jdk安装目录下D:\toots\Java\jdk1.6.0_18\bin\msvcr71.dll复制到C:\WINDOWS\system32下 二、 安装过程 设置环境...

Global site tag (gtag.js) - Google Analytics