您的位置:首页 > 编程语言 > Java开发

java 压缩文件(文件夹)

2011-07-08 22:01 645 查看
package others;

import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.zip.Adler32;
import java.util.zip.CheckedOutputStream;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;

public class Zip {

/**
* 中文条件下文件(夹)压缩
*
*/
public static void zipCompress(String src,String des)
throws IOException{
ZipOutputStream out=null;
try {
CheckedOutputStream cusm=
new CheckedOutputStream(new FileOutputStream(des),new Adler32());
out=new ZipOutputStream(new BufferedOutputStream(cusm));

fileZip(new File(src),out,"");
}finally{
if(out!=null){
out.close();
}
}
}

private static void fileZip(File file, ZipOutputStream out,
String base)  throws IOException{
if(file.isFile()){
if(base.length()>0){
out.putNextEntry(new ZipEntry(base));
}else{
out.putNextEntry(new ZipEntry(file.getName()));
}

BufferedReader in=new BufferedReader(
new InputStreamReader(new FileInputStream(file),"ISO8859_1"));

int c;
while((c=in.read())!=-1){
out.write(c);
}
in.close();

}else if(file.isDirectory()){
File[] subFiles=file.listFiles();

out.putNextEntry(new ZipEntry(base+File.separator));
base=base.length()!=0?base+File.separator:"";

for(File subFile:subFiles){
fileZip(subFile,out,base+subFile.getName());
}
}

}

public static void main(String[] args) {
/*需要压缩的源文件夹路径*/
String folderSrcPath="E://123";

/*压缩后的zip文件及其存放位置*/
String forderDesPath="E://压缩文件.zip";

try {
Zip.zipCompress(folderSrcPath,forderDesPath);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("完成压缩");
}
}


说明:1、需要引入jar包
2,、当被压缩的文件夹比较大时,会很慢的,耗时较多
参考:http://blog.csdn.net/gaoyusi4964238/article/details/4948151
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: