package com.mjp.core.util;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.Adler32;
import java.util.zip.CheckedOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipUtil {
public static void compress(File dir,File dest) throws Exception{
FileOutputStream fos = new FileOutputStream(dest);
CheckedOutputStream cos = new CheckedOutputStream(fos,new Adler32());
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(cos));
zipFile(out,dir,dir.getName());
}
private static void zipFile(ZipOutputStream out,File dir,String filePath) throws Exception{
for(File f : dir.listFiles()){
String name = filePath + File.separator + f.getName();
if(f.isDirectory()){
zipFile(out,f,name);
}else{
FileInputStream in = new FileInputStream(f);
out.putNextEntry(new ZipEntry(name));
byte[] b = new byte[1024];
int off = 0;
while(in.read(b,off,1024) != -1){
out.write(b);
}
in.close();
}
}
}
}
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.Adler32;
import java.util.zip.CheckedOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipUtil {
public static void compress(File dir,File dest) throws Exception{
FileOutputStream fos = new FileOutputStream(dest);
CheckedOutputStream cos = new CheckedOutputStream(fos,new Adler32());
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(cos));
zipFile(out,dir,dir.getName());
}
private static void zipFile(ZipOutputStream out,File dir,String filePath) throws Exception{
for(File f : dir.listFiles()){
String name = filePath + File.separator + f.getName();
if(f.isDirectory()){
zipFile(out,f,name);
}else{
FileInputStream in = new FileInputStream(f);
out.putNextEntry(new ZipEntry(name));
byte[] b = new byte[1024];
int off = 0;
while(in.read(b,off,1024) != -1){
out.write(b);
}
in.close();
}
}
}
}
本文介绍了一个使用Java实现的文件压缩工具类,该工具类能够将指定目录下的所有文件及子目录进行压缩,并输出为ZIP格式的文件。压缩过程中使用了Adler32校验和来确保压缩文件的完整性和正确性。
1万+

被折叠的 条评论
为什么被折叠?



