java生成压缩文件示例代码
代码:
importjava.io.BufferedOutputStream;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importorg.apache.tools.zip.ZipEntry;
importorg.apache.tools.zip.ZipOutputStream;
/**
*@project:Test
*@authorchenssy
*@date2013-7-28
*@Description:文件压缩工具类
* 将指定文件/文件夹压缩成zip、rar压缩文件
*/
publicclassCompressedFileUtil{
/**
*默认构造函数
*/
publicCompressedFileUtil(){
}
/**
*@desc将源文件/文件夹生成指定格式的压缩文件,格式zip
*@paramresourePath源文件/文件夹
*@paramtargetPath 目的压缩文件保存路径
*@returnvoid
*@throwsException
*/
publicvoidcompressedFile(StringresourcesPath,StringtargetPath)throwsException{
FileresourcesFile=newFile(resourcesPath); //源文件
FiletargetFile=newFile(targetPath); //目的
//如果目的路径不存在,则新建
if(!targetFile.exists()){
targetFile.mkdirs();
}
StringtargetName=resourcesFile.getName()+".zip"; //目的压缩文件名
FileOutputStreamoutputStream=newFileOutputStream(targetPath+"\\"+targetName);
ZipOutputStreamout=newZipOutputStream(newBufferedOutputStream(outputStream));
createCompressedFile(out,resourcesFile,"");
out.close();
}
/**
*@desc生成压缩文件。
* 如果是文件夹,则使用递归,进行文件遍历、压缩
* 如果是文件,直接压缩
*@paramout 输出流
*@paramfile 目标文件
*@returnvoid
*@throwsException
*/
publicvoidcreateCompressedFile(ZipOutputStreamout,Filefile,Stringdir)throwsException{
//如果当前的是文件夹,则进行进一步处理
if(file.isDirectory()){
//得到文件列表信息
File[]files=file.listFiles();
//将文件夹添加到下一级打包目录
out.putNextEntry(newZipEntry(dir+"/"));
dir=dir.length()==0?"":dir+"/";
//循环将文件夹中的文件打包
for(inti=0;i<files.length;i++){
createCompressedFile(out,files[i],dir+files[i].getName()); //递归处理
}
}
else{ //当前的是文件,打包处理
//文件输入流
FileInputStreamfis=newFileInputStream(file);
out.putNextEntry(newZipEntry(dir));
//进行写操作
intj= 0;
byte[]buffer=newbyte[1024];
while((j=fis.read(buffer))>0){
out.write(buffer,0,j);
}
//关闭输入流
fis.close();
}
}
publicstaticvoidmain(String[]args){
CompressedFileUtilcompressedFileUtil=newCompressedFileUtil();
try{
compressedFileUtil.compressedFile("G:\\zip","F:\\zip");
System.out.println("压缩文件已经生成...");
}catch(Exceptione){
System.out.println("压缩文件生成失败...");
e.printStackTrace();
}
}
}
相关文章
- Java爱心代码_java怎么敲入代码
- 初笔,JAVA.HelloWorld代码详解「建议收藏」
- java反转数组_Java实现数组反转翻转的方法实例
- java backoff_Java BackOff类代码示例
- java启动器_JAVA基础:Java 启动器如何查找类
- java山寨qq账号密码验证_Java实战-山寨QQ
- Java集合转数组 数组转集合的几种常用方式[通俗易懂]
- JAVA代码审计之java反序列化
- 反编译Java_java反编译的代码可以修改么
- Java Base64加密与解密示例代码
- java解释器虚拟机-Java代码如何运行在Java虚拟机中
- 【Java 代码审计入门-03】XSS 漏洞原理与实际案例介绍
- 快递鸟Java SDK的功能介绍、API介绍和示例代码
- 【Android FFMPEG 开发】C++ 回调 Java 方法 模板 ( JavaVM *vm | JNIEnv *env | jobject instance | 引用类型 | 模板代码示例 )
- 中的应用Java中MySQL的灵活运用(mysql在java代码)
- Linux下快速编写高效的Java代码(linux写java)
- Linux下搭建 Java 开发环境(linux搭建java环境)
- Linux系统中下载Java的方法(linux下java下载)
- Linux下编译Java文件,迎来新体验(linux编译java文件)
- 使用Java监听MySQL数据库变化(java监听mysql)
- MSSQL与Java的数据库连接实践(mssql连接java)
- Linux系统下Java软件环境搭建指导(linux java软件)
- 数据库一步一步教你Java如何恢复Oracle数据库(java恢复oracle)
- java与js代码互调示例代码
- Java线程优先级示例代码
- java实现优酷视频地址解析示例代码分享