有业务场景需要根据一些树状结构, 打包每个节点的文件到一个zip包. 下面使用 org.apache.tools.zip.ZipOutputStream 封装成一个方法.
/**
将文件压缩到ZIP输出流
* @param dirPath 目录路径
* @param file 文件
* @param zouts 输出流
* @param fileName 要存储的文件名
* @param isDirectory 是否是目录
*/
public static void zipFilesToZipFile(String dirPath, File file,
ZipOutputStream zouts,String fileName,Boolean isDirectory) {
FileInputStream fin = null;
ZipEntry entry = null;
// 创建复制缓冲区
try {
byte[] buf = new byte[4096];
int readByte = 0;
if (file.isFile()) {
// 创建一个文件输入流
fin = new FileInputStream(file);
// 创建一个ZipEntry
entry = new ZipEntry(getEntryName(dirPath, fileName));
// 存储信息到压缩文件
zouts.putNextEntry(entry);
// 复制字节到压缩文件
while ((readByte = fin.read(buf)) != -1) {
zouts.write(buf, 0, readByte);
}
zouts.closeEntry();
fin.close();
System.out.println("添加文件 " +