java zip打包多个文件工具类
package com.imddy.tweb.util;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipFileUtils {
public static boolean zip(String zipFileName, File... files) {
ZipOutputStream out = null;
BufferedOutputStream bo = null;
try {
createDir(zipFileName);
out = new ZipOutputStream(new FileOutputStream(zipFileName));
for (int i = 0; i < files.length; i++) {
if (null != files[i]) {
zip(out, files[i], files[i].getName());
}
}
out.close(); // 输出流关闭
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
private static void zip(ZipOutputStream out, File file, String base) {
try {
if (file.isDirectory()) {//压缩目录
try {
File[] fl = file.listFiles();
if (fl.length == 0) {
out.putNextEntry(new ZipEntry(base + "/")); // 创建zip实体
}
for (int i = 0; i < fl.length; i++) {
zip(out, fl[i], base + "/" + fl[i].getName()); // 递归遍历子文件夹
}
} catch (IOException e) {
e.printStackTrace();
}
}else{ //压缩单个文件
out.putNextEntry(new ZipEntry(base)); // 创建zip实体
FileInputStream in = new FileInputStream(file);
BufferedInputStream bi = new BufferedInputStream(in);
int b;
while ((b = bi.read()) != -1) {
out.write(b); // 将字节流写入当前zip目录
}
out.closeEntry(); //关闭zip实体
in.close(); // 输入流关闭
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 目录不存在时,先创建目录
* @param zipFileName
*/
private static void createDir(String zipFileName){
String filePath = zipFileName.substring(0, zipFileName.lastIndexOf("/"));
File targetFile = new File(filePath);
if (!targetFile.exists()) {//目录不存在时,先创建目录
targetFile.mkdirs();
}
}
public static void main(String[] args) {
String s = "d:/logbb/t/t.zip";
String s0 = "D:/我的文档/QQ图片20151021002909.jpg";
String s1 = "D:\\我的文档\\QQ图片20151021002942.jpg";
String s2 = "D:/我的文档/QQ图片20151212212325.jpg";
String s3 = "D:\\我的文档\\QQ图片20160109010730.jpg";
//ZipFileUtils.zip(s, new File[]{new File(s0), new File(s1), new File(s2), new File(s3)});
ZipFileUtils.zip("D:/logcc/t/t.zip", new File("D:/我的文档/图片收藏"));
System.out.println("ok");
}
}