package org.alfresco.repo.bom.util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipOutputStream; /** * Compressor Util * @author HJ * */ public class CompressorUtil { private static final String source = "F:/test"; // wait compressor source path private static final String zipSource = "F:/chiang.zip"; // after compressor zip file path private static long startTime;// compressor start system time private static long endTime;// compressor end system time public void compressor() throws Exception{ startTime = System.currentTimeMillis();//record start compressor system time , boolean flag = false;// flag :true->compressor success String baseDir = "";//defalut relative Dir , "" is gen Dir File s = new File(source); File zs = new File(zipSource);//create zip file if (zs.exists()) {// if this dir exists this zip file zs.delete(); // delete this zip file , } ZipOutputStream zos = null; try { zos = new ZipOutputStream(new FileOutputStream(zs)); zos.setEncoding("GBK"); // solve Chinese garbled startCompressor(baseDir, zos, s); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if (zos!=null) zos.close(); endTime = System.currentTimeMillis(); System.out.println("compressor success,use time:"+(endTime-startTime)+"ms"); } } public void startCompressor(String baseDir,ZipOutputStream zos,File source) throws Exception{ if (source.isFile()) {// is file toCompressedFile(baseDir, zos, source); } if (source.isDirectory()) { //is dir File[] sources = source.listFiles(); // get dir all files ( file or dir) for(File f:sources){ if (f.isFile()) {// is file toCompressedFile(baseDir, zos, f); } if (f.isDirectory()) {//is dir // if is dir , update baseDir value . String newBaseDir = baseDir + f.getName() + "/"; createCompressedDir(baseDir, zos, f);//create dir and entry startCompressor(newBaseDir, zos, f); // Re } } } } /** * add entry to zip file by stream way * @param baseDir * @param zos * @param f * @throws Exception */ public void toCompressedFile(String baseDir,ZipOutputStream zos,File f) throws Exception{ InputStream input = null; ZipEntry z = new ZipEntry(baseDir+f.getName()); try { zos.putNextEntry(z); // add entry to zip file input = new FileInputStream(f); int data = 0; while ((data=input.read())!=-1) { zos.write(data); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(input!=null) input.close(); zos.closeEntry(); } } /** * create compressed file dir and ZipEntry * @param baseDir * @param zos zip file's ZipOutputStream * @param f */ public void createCompressedDir(String baseDir,ZipOutputStream zos,File f){ ZipEntry z = new ZipEntry(baseDir+f.getName()+"/"); try { zos.putNextEntry(z); zos.closeEntry(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //test main method public static void main(String[] args) throws Exception{ CompressorUtil cu = new CompressorUtil(); cu.compressor(); } }
相关推荐
java实现多个文件压缩
利用java技术,来实现对视频处理 对视频进行压缩处理。
用java实现huffman编码,Encode.java实现文件的压缩,Decode.java 实现文件的解压缩
包含了使用的jar包,以及一个Java类,实现了使用Java对多目录多层级的文件进行打包,以及对ZIP包进行解压缩的操作。
JAVA实现目录及文件的zip压缩和解压
2.Gzip是将文件的存储空间压缩保存,文件名后缀是.gz 3.tar.gz或.tgz通常是指将文件打包到一个tar文件中,并将它使用Gzip进行压缩。 一、将两个文件打包到tar.gz 下面的这个例子是将2个文件打包为tar.gz压缩文件。...
使用apache的第三方包,实现对文件的压缩和解压缩,解决jdk自带的实现中,中文文件名乱码问题,压缩和解压缩时,可以设置文件名的编码方式
java 版的文件分割压缩 可以对大文件进行拆分。 文件大小可定义
该工具类可以实现以下几个功能 1、得到有效文件的长度(即大小),以字节表示 getFileSize(String filePath),需要传入文件路径 2、可以上传图片与非图片文件。有二个重构方法 一、无限制文件大小上传upLoad(String...
基于GUI用IO流中的ZipOutputStream ,ZipInputStream实现文件的解压与压缩, 如文件解压函数如下 private void unZip(String zipFileName, String outputDirectory)throws Exception { InputStream in=null; ...
java批量压缩文件跟文件夹,目前还不支持中文名,后期会改进,谢谢
java实现文件解压缩,ZipInputStream,ZipOutputStream
java语言实现的针对文件压缩、解压缩处理方法
java 实现文件的压缩与解压,很不错的一个例子,很适合初学者学习
本代码实例演示如何用java语言实现apk文件的压缩和解压缩。
JAVA实现对文件夹“加密码压缩” 此资源解压后为一个文件夹,就是一个package包 (压缩后为Zip文件) 无需导入任何个人jar包 压缩后效果等同于用winrar给压缩包加密码 时间紧迫,暂时存在中文文件夹名称乱码问题...
压缩API:Java提供了java.util.zip和java.util.jar包来实现文件的压缩和解压缩操作。 压缩算法:通过选择不同的压缩算法,如DEFLATE算法用于ZIP格式,实现对文件的压缩。 流操作:使用Java的输入输出流(InputStream...
使用java的zip压缩库 对文件和文件夹实现压缩