Java实现ZIP打包

代码备份。

package com;


import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;


import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;


/**
需要ant-1.6.5jar包
*/
public class ZipUtil {


/**
* 压缩
* @param compressedFilePath 被压缩的文件或文件夹全路径
* @param zipFileDir 创建的压缩文件的路径
* @param zipFileName 创建的压缩文件名
*/
public static void compress(String compressedFilePath, String zipFileDir, String zipFileName) {
File compressedFile = new File(compressedFilePath);
ZipOutputStream zipOs = null;
try {
zipOs = new ZipOutputStream(new FileOutputStream(zipFileDir + File.separator + zipFileName));
compress(compressedFile, zipOs, "");
zipOs.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}

private static void compress(File compressedFile, ZipOutputStream zipOs, String base) throws IOException {  
       InputStream ins = null;          
       byte[] contents = new byte[1024];
       if (compressedFile.isDirectory()) { //如果被压缩的是一个目录
        File[] childrenList = compressedFile.listFiles();
        base = base.length()==0 ? "" : (base + File.separator);
        for (int i=0; i<childrenList.length; i++) {
        compress(childrenList[i], zipOs, base+childrenList[i].getName());
        }
       } else { //如果是一个文件
        if ("".equalsIgnoreCase(base)) {
        base = compressedFile.getName();
        }
        zipOs.putNextEntry(new ZipEntry(base));
        ins = new BufferedInputStream(new FileInputStream(compressedFile));
        int line;
        while ((line=ins.read(contents, 0, 1024)) != -1) {
        zipOs.write(contents, 0, line);
        }
        ins.close();
       }        
   } 

public static void main(String[] args) {
String compressedFilePath = "D:/aa";
    String zipFileDir = "D:/";
    String zipFileName = "压缩包.zip";
    compress(compressedFilePath, zipFileDir, zipFileName);
    System.out.println("chenggong");
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值