import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
public class ZipUtil {
//压缩单个文件
public static void compressFile(String sourceFile, String destFile)throws IOException {
File file=new File(sourceFile);
ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(destFile));
recursiveCompression(file, file.getName(), zos);
zos.close();
}
//压缩文件列表
public static void compressList(List<String> sourceList, String destFile) throws IOException {
ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(destFile));
for (String sourceFile:sourceList) {
File file =new File(sourceFile);
recursiveCompression(file, file.getName(), zos);
}
zos.close();
}
//递归压缩
public static void recursiveCompression(File sourceFile, String filename, ZipOutputStream zos)throws IOException {
if (sourceFile.isDirectory()) {
filename = filename.endsWith("/") ?filename: filename + "/";
zos.putNextEntry(new ZipEntry(filename));
zos.closeEntry();
for (File child:sourceFile.listFiles()) {
recursiveCompression(child, filename + child.getName(), zos);
}
//如果当前递归对象是文件夹,加入ZipEntry之后就返回
return;
}
FileInputStream fis=new FileInputStream(sourceFile);
zos.putNextEntry(new ZipEntry(filename));
byte[] bytes=new byte[1024];
int len;
while ((len = fis.read(bytes)) >= 0) {
zos.write(bytes, 0, len);
}
fis.close();
}
//解压文件
public static void unCompress(String zipFile, String destDir)throws IOException {
byte[] buffer=new byte[1024];
ZipInputStream zis=new ZipInputStream(new FileInputStream(zipFile));
ZipEntry zipEntry=zis.getNextEntry();
while (zipEntry != null) {
File file=new File(destDir, zipEntry.getName());
if (zipEntry.isDirectory()) {
if (!file.exists()) file.mkdirs();
} else {
FileOutputStream fos=new FileOutputStream(file);
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
}
zipEntry = zis.getNextEntry();
}
zis.closeEntry();
zis.close();
}
}
Zip压缩解压缩
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 转自http://www.open-open.com/lib/view/open1363592512046.htm...
- 利用zip 命令对文件或文件夹进行加密和解密。 加密方法: 对文件进行加密 zip -e aa.zip aa.lo...
- tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这...