java生成压缩文件示例代码
代码:
import java.io.bufferedoutputstream;
import java.io.file;
import java.io.fileinputstream;
import java.io.fileoutputstream;
import org.apache.tools.zip.zipentry;
import org.apache.tools.zip.zipoutputstream;
/**
* @project: test
* @author chenssy
* @date 2013-7-28
* @description: 文件压缩工具类
* 将指定文件/文件夹压缩成zip、rar压缩文件
*/
public class compressedfileutil {
/**
* 默认构造函数
*/
public compressedfileutil(){
}
/**
* @desc 将源文件/文件夹生成指定格式的压缩文件,格式zip
* @param resourepath 源文件/文件夹
* @param targetpath 目的压缩文件保存路径
* @return void
* @throws exception
*/
public void compressedfile(string resourcespath,string targetpath) throws exception{
file resourcesfile = new file(resourcespath); //源文件
file targetfile = new file(targetpath); //目的
//如果目的路径不存在,则新建
if(!targetfile.exists()){
targetfile.mkdirs();
}
string targetname = resourcesfile.getname()+".zip"; //目的压缩文件名
fileoutputstream outputstream = new fileoutputstream(targetpath+"\\"+targetname);
zipoutputstream out = new zipoutputstream(new bufferedoutputstream(outputstream));
createcompressedfile(out, resourcesfile, "");
out.close();
}
/**
* @desc 生成压缩文件。
* 如果是文件夹,则使用递归,进行文件遍历、压缩
* 如果是文件,直接压缩
* @param out 输出流
* @param file 目标文件
* @return void
* @throws exception
*/
public void createcompressedfile(zipoutputstream out,file file,string dir) throws exception{
//如果当前的是文件夹,则进行进一步处理
if(file.isdirectory()){
//得到文件列表信息
file[] files = file.listfiles();
//将文件夹添加到下一级打包目录
out.putnextentry(new zipentry(dir+"/"));
dir = dir.length() == 0 ? "" : dir +"/";
//循环将文件夹中的文件打包
for(int i = 0 ; i < files.length ; i++){
createcompressedfile(out, files[i], dir + files[i].getname()); //递归处理
}
}
else{ //当前的是文件,打包处理
//文件输入流
fileinputstream fis = new fileinputstream(file);
out.putnextentry(new zipentry(dir));
//进行写操作
int j = 0;
byte[] buffer = new byte[1024];
while((j = fis.read(buffer)) > 0){
out.write(buffer,0,j);
}
//关闭输入流
fis.close();
}
}
public static void main(string[] args){
compressedfileutil compressedfileutil = new compressedfileutil();
try {
compressedfileutil.compressedfile("g:\\zip", "f:\\zip");
system.out.println("压缩文件已经生成...");
} catch (exception e) {
system.out.println("压缩文件生成失败...");
e.printstacktrace();
}
}
}