package com.cepri.structData.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;
public class ZipUtil {
/**
* 把文件放入 ZipOutputStream 中
* @param file
* @param zos
* @throws IOException
* date: 2011-3-25
*
*/
public static void conpressFile(File file, ZipOutputStream zos) throws IOException{
// 获取文件名
String fileName = file.getName();
// 读取将要压缩的文件
InputStream is = new FileInputStream(file.getPath());
compressInputStream(is, fileName, zos);
}
/**
* 把输入流放入 ZipOutputStream 中
* @param ins 输入流
* @param fileName 输入流对应的文件 在zip包中的的文件名
* @param zos zip输出流
* @throws IOException
* date: 2011-3-25
*
*/
public static void compressInputStream(InputStream ins, String fileName, ZipOutputStream zos) throws IOException {
// 代表ZIP文件条目
ZipEntry ze = new ZipEntry(fileName);
// 开始写入新的 ZIP 文件条目并将流定位到条目数据的开始处。
zos.putNextEntry(ze);
// 循环读一部分压缩一部分
byte buffer[] = new byte[8192];
int len = 0;
while ((len = ins.read(buffer)) > 0) {
zos.write(buffer, 0, len);
}
// 闭当前 ZIP 条目并定位流以写入下一个条目。
zos.closeEntry();
}
}