代码备份。
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");
}
}