如何使用Apache CommonsCompress系统库实现将文件压缩为zip格式的压缩文件的应用示例.docx
《如何使用Apache CommonsCompress系统库实现将文件压缩为zip格式的压缩文件的应用示例.docx》由会员分享,可在线阅读,更多相关《如何使用Apache CommonsCompress系统库实现将文件压缩为zip格式的压缩文件的应用示例.docx(9页珍藏版)》请在冰豆网上搜索。
如何使用ApacheCommonsCompress系统库实现将文件压缩为zip格式的压缩文件的应用示例
1.1如何使用ApacheCommons-Compress系统库实现将文件压缩为zip格式的压缩文件的应用示例
1.1.1新建一个J2SE的Java应用程序项目
1、新建一个J2SE的Java应用程序项目
2、设置项目名称为JavaCompress
3、创建出名称为JavaCompress的Java应用程序项目
1.1.2在所创建出的JavaCompress项目中添加一个Java应用程序类
1、新建一个Java应用程序类
2、设置类名称为ApacheCommonCompressFileUtil,程序包名称为com.bluedream.javacompress
(1)创建ApacheCommonCompressFileUtil程序类
(2)ApacheCommonCompressFileUtil程序类的初始代码
1.1.3编程ApacheCommonCompressFileUtil程序类和准备测试用的待压缩的原始文件
1、ApacheCommonCompressFileUtil程序类的代码示例
(1)项目局部截图
(2)ApacheCommonCompressUtil程序类的代码示例
packagecom.bluedream.javacompress;
importjava.io.BufferedInputStream;
importjava.io.BufferedOutputStream;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.OutputStream;
importpress.archivers.zip.ZipArchiveEntry;
importpress.archivers.zip.ZipArchiveOutputStream;
importpress.utils.IOUtils;
publicclassApacheCommonCompressFileUtil{
/**
*设定文件读写的缓冲区的默认容量为1024(1KB)字节
*/
publicstaticfinalintBUFFER_SIZE=1024;
publicApacheCommonCompressFileUtil(){
super();
}
/**
*对某个单一文件实现压缩为*.zip格式的压缩文件的功能方法
*@paramcompressedSourceFileName待压缩的原始文件路径和文件名称字符串
*@paramsavedTargetZipFileName压缩后输出的目标*.zip文件的目录路径和文件名称字符串
*/
publicvoiddoCompressSomeOneFileToZipFile(StringcompressedSourceFileName,StringsavedTargetZipFileName){
ZipArchiveOutputStreamsomeOneZipArchiveOutputStream=null;
InputStreamsomeOneBufferedInputStream=null;
OutputStreamsomeOneBufferedOutputStream=null;
FilecompressedSourceFile=null;
FilesavedTargetZipFile=null;
ZipArchiveEntrysomeOneZipArchiveEntry=null;
/**
*将调用中所给定的待压缩的原始文件路径和文件名称字符串、压缩输出的目标*.zip文件的目录和文件名称字符串转换为JavaIO中的File文件对象
*/
compressedSourceFile=newFile(compressedSourceFileName);
savedTargetZipFile=newFile(savedTargetZipFileName);
try{
/**
*将待压缩的原始文件的二进制输入流转换为缓存输入流对象,将压缩输出的目标*.zip文件的二进制输除流转换为缓存输出流对象
*/
someOneBufferedInputStream=newBufferedInputStream(newFileInputStream(compressedSourceFile),BUFFER_SIZE);
someOneBufferedOutputStream=newBufferedOutputStream(newFileOutputStream(savedTargetZipFile),BUFFER_SIZE);
/**
*将缓存输出流对象转换为ZipArchiveOutputStream流对象
*/
someOneZipArchiveOutputStream=newZipArchiveOutputStream(someOneBufferedOutputStream);
/**
*根据压缩的原始文件名称构建出对应的目标压缩*.zip文件的ZipArchiveEntry对象
*/
someOneZipArchiveEntry=newZipArchiveEntry(compressedSourceFile.getName());
someOneZipArchiveEntry.setSize(compressedSourceFile.length());
someOneZipArchiveOutputStream.putArchiveEntry(someOneZipArchiveEntry);
/**
*对原始的待压缩文件进行压缩处理,并创建出压缩后的目标文件
*/
IOUtils.copy(someOneBufferedInputStream,someOneZipArchiveOutputStream);
someOneZipArchiveOutputStream.closeArchiveEntry();
}
catch(FileNotFoundExceptionexception){
exception.printStackTrace();
}
catch(IOExceptionexception){
exception.printStackTrace();
}
finally{
/**
*关闭文件输入和输出流
*/
if(null!
=someOneBufferedInputStream){
IOUtils.closeQuietly(someOneBufferedInputStream);
}
if(null!
=someOneBufferedOutputStream){
IOUtils.closeQuietly(someOneBufferedOutputStream);
}
if(null!
=someOneZipArchiveOutputStream){
IOUtils.closeQuietly(someOneZipArchiveOutputStream);
}
}
}
publicstaticvoidmain(String[]args)throwsException{
StringcompressedSourceFileName="E:
/Tencent/待压缩的测试文件.doc";
StringsavedTargetZipFileName="E:
/Tencent/待压缩的测试文件.zip";
ApacheCommonCompressFileUtiloneApacheCommonCompressUtil=newApacheCommonCompressFileUtil();
oneApacheCommonCompressUtil.doCompressSomeOneFileToZipFile(compressedSourceFileName,savedTargetZipFileName);
}
}
2、准备测试用的待压缩的原始文件
本示例所需要的待压缩的原始文件为:
E:
/Tencent/待压缩的测试文件.doc,该文件为中文文件名称的文件,主要测试是否支持中文文件名称的压缩功能。
而压缩后的输出目标*.zip文件为E:
/Tencent/待压缩的测试文件.zip,如下示图为程序代码中的输入和输出文件名称的定义。
1.1.4执行ApacheCommonCompressFileUtil程序类
1、执行ApacheCommonCompressFileUtil程序类
2、ApacheCommonCompressFileUtil程序类执行的结果