JAVA 文件处理 压缩文件或文件夹 ZipOutputStream ZipEntry 文件处理
2014-01-01 18:31
1216 查看
参考地址:http://www.blogjava.net/lhbjava/archive/2012/03/20/226363.html
在此基础上又进行了扩展压缩多文件和文件夹,(我放到了我的工具类FileUtil中),关于所有的工具类我放到了github中,大家可以下载源码参考,版本也在不断更新中:
github地址:https://github.com/369528294/ibicnCloud-util
现在将压缩的代码粘贴出来,仅供参考;
首先是JAR包的引用,需要用的是ant-1.9.2.jar,建议用MAVEN管理,这样会自动引入另一个依赖包ant-launcher-1.9.2.jar
在文件中写了2静态方法,调用第一个即可,即ZipFiles
具体的压缩迭代使用
在此基础上又进行了扩展压缩多文件和文件夹,(我放到了我的工具类FileUtil中),关于所有的工具类我放到了github中,大家可以下载源码参考,版本也在不断更新中:
github地址:https://github.com/369528294/ibicnCloud-util
现在将压缩的代码粘贴出来,仅供参考;
首先是JAR包的引用,需要用的是ant-1.9.2.jar,建议用MAVEN管理,这样会自动引入另一个依赖包ant-launcher-1.9.2.jar
//import java.util.zip.ZipEntry; //import java.util.zip.ZipOutputStream; //用ant.jar的zip.*可以解决中文文件名问题 import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipOutputStream;
在文件中写了2静态方法,调用第一个即可,即ZipFiles
/** * 压缩文件 * * @param srcfile * File[] 需要压缩的文件列表 * @param zipfile * File 压缩后的文件 */ public static int ZipFiles(File[] srcfile, String zipFile) { try { // Create the ZIP file OutputStream os = new FileOutputStream(zipFile); BufferedOutputStream bs = new BufferedOutputStream(os); ZipOutputStream out = new ZipOutputStream(bs); // Compress the files for (int i = 0; i < srcfile.length; i++) { zip(srcfile[i], new File(zipFile), out, true, true); } out.closeEntry(); // Complete the ZIP file out.close(); // System.out.println("压缩完成."); return 1; } catch (IOException e) { e.printStackTrace(); return -1; } }
具体的压缩迭代使用
/** * @param path 要压缩的路径, 可以是目录, 也可以是文件. * @param basePath 如果path是目录,它一般为new File(path), 作用是:使输出的zip文件以此目录为根目录, 如果为null它只压缩文件, 不解压目录. * @param zo 压缩输出流 * @param isRecursive 是否递归 * @param isOutBlankDir 是否输出空目录, 要使输出空目录为true,同时baseFile不为null. * @throws IOException */ public static void zip(File inFile, File basePath, ZipOutputStream zo, boolean isRecursive, boolean isOutBlankDir) throws IOException { File[] files = new File[0]; if(inFile.isDirectory()) { //是目录 files = inFile.listFiles(); } else if(inFile.isFile()) { //是文件 files = new File[1]; files[0] = inFile; } byte[] buf = new byte[1024]; int len; //System.out.println("baseFile: "+baseFile.getPath()); for(int i=0; i<files.length; i++) { String pathName = ""; if(basePath != null) { if(basePath.isDirectory()) { pathName = files[i].getPath().substring(basePath.getPath().length()+1); } else {//文件 pathName = files[i].getPath().substring(basePath.getParent().length()+1); } } else { pathName = files[i].getName(); } //System.out.println(pathName); if(files[i].isDirectory()) { if(isOutBlankDir && basePath != null) { zo.putNextEntry(new ZipEntry(pathName+"/")); //可以使空目录也放进去 } if(isRecursive) { //递归 zip(files[i], basePath, zo, isRecursive, isOutBlankDir); } } else { FileInputStream fin = new FileInputStream(files[i]); zo.putNextEntry(new ZipEntry(pathName)); while((len=fin.read(buf))>0) { zo.write(buf,0,len); } fin.close(); } } }
相关文章推荐
- zip4j -- Java处理zip压缩文件的完整解决方案
- 跨平台的zip文件压缩处理,支持压缩解压文件夹
- zip4j -- Java处理zip压缩文件的完整解决方案
- java实现zip压缩文件/文件夹
- java的ZipOutputStream压缩文件的两个问题(乱码和每次zip后文件md5变化)
- zip4j -- Java处理zip压缩文件的完整解决方案
- zip4j -- Java处理zip压缩文件的完整解决方案
- 利用java的ZipOutputStream类压缩文件,解压文件或文件夹中的文件
- Java实现将文件或者文件夹压缩成zip
- zip4j -- Java处理zip压缩文件的完整解决方案
- zip4j -- Java处理zip压缩文件的完整解决方案
- JAVA实现把指定文件夹下的所有文件压缩成zip包
- java的ZipOutputStream压缩文件的两个问题(乱码和每次zip后文件md5变化)
- java处理zip压缩文件
- java 压缩/解压 zip 多个文件和文件夹
- java实现zip压缩文件/文件夹
- 使用Java zip包和apach 的ant包对文件、文件夹进行压缩,兼容中文
- java实现zip压缩文件/文件夹
- java 将文件夹压缩为zip压缩文件
- zip4j -- Java处理zip压缩文件的完整解决方案