结合Apache的ant.jar解压缩
来源:互联网 发布:网络应急指挥体系 编辑:程序博客网 时间:2024/06/04 18:17
注意:需要添加ant.jar包才可使用。import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.Enumeration;import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipFile;import org.apache.tools.zip.ZipOutputStream;/** * 解压缩文件 * Description: 通过apache的zip工具实现解压缩 */public class CompressFile { private static CompressFile instance = new CompressFile(); private CompressFile() { } public static CompressFile getInstance() { return instance; } /** * 压缩文件或者文件目录到指定的zip或者rar包 * * @param inputFilename * 要压缩的文件或者文件夹,如果是文件夹的话,会将文件夹下的所有文件包含子文件夹的内容进行压缩 * @param zipFilename * 生成的zip或者rar文件的名称 */ public synchronized void zip(String inputFilename, String zipFilename) throws IOException { zip(new File(inputFilename), zipFilename); } /** * 压缩文件或者文件目录到指定的zip或者rar包,内部调用 * * @param inputFile * 参数为文件类型的要压缩的文件或者文件夹 * @param zipFilename * 生成的zip或者rar文件的名称 * @return void */ private synchronized void zip(File inputFile, String zipFilename) throws IOException { ZipOutputStream out = new ZipOutputStream(new FileOutputStream( zipFilename)); try { zip(inputFile, out, ""); } catch (IOException e) { throw e; } finally { out.close(); } } /** * 压缩文件或者文件目录到指定的zip或者rar包 * * @param inputFile * 参数为文件类型的要压缩的文件或者文件夹 * @param out * 输出流 * @param base * 基文件夹 * @return void */ private synchronized void zip(File inputFile, ZipOutputStream out, String base) throws IOException { if (inputFile.isDirectory()) { File[] inputFiles = inputFile.listFiles(); out.putNextEntry(new ZipEntry(base + "/")); base = base.length() == 0 ? "" : base + "/"; for (int i = 0; i < inputFiles.length; i++) { zip(inputFiles[i], out, base + inputFiles[i].getName()); } } else { if (base.length() > 0) { out.putNextEntry(new ZipEntry(base)); } else { out.putNextEntry(new ZipEntry(inputFile.getName())); } FileInputStream in = new FileInputStream(inputFile); try { int c; byte[] by = new byte[BUFFEREDSIZE]; while ((c = in.read(by)) != -1) { out.write(by, 0, c); } } catch (IOException e) { throw e; } finally { in.close(); } } } /** * 解压zip或者rar包的内容到指定的目录下,可以处理其文件夹下包含子文件夹的情况 * * @param zipFilename * 要解压的zip或者rar包文件 * @param outputDirectory * 解压后存放的目录 */ public synchronized void unzip(String zipFilename, String outputDirectory) throws IOException { File outFile = new File(outputDirectory); if (!outFile.exists()) { outFile.mkdirs(); } ZipFile zipFile = new ZipFile(zipFilename); Enumeration en = zipFile.getEntries(); ZipEntry zipEntry = null; while (en.hasMoreElements()) { zipEntry = (ZipEntry) en.nextElement(); if (zipEntry.isDirectory()) { // mkdir directory String dirName = zipEntry.getName(); // System.out.println("=dirName is:=" + dirName + "=end="); dirName = dirName.substring(0, dirName.length() - 1); File f = new File(outFile.getPath() + File.separator + dirName); f.mkdirs(); } else { // unzip file String strFilePath = outFile.getPath() + File.separator + zipEntry.getName(); File f = new File(strFilePath); // the codes remedified by can_do on 2010-07-02 =begin= // /////begin///// // 判断文件不存在的话,就创建该文件所在文件夹的目录 if (!f.exists()) { String[] arrFolderName = zipEntry.getName().split("/"); String strRealFolder = ""; for (int i = 0; i < (arrFolderName.length - 1); i++) { strRealFolder += arrFolderName[i] + File.separator; } strRealFolder = outFile.getPath() + File.separator + strRealFolder; File tempDir = new File(strRealFolder); // 此处使用.mkdirs()方法,而不能用.mkdir() tempDir.mkdirs(); } // /////end/// // the codes remedified by can_do on 2010-07-02 =end= f.createNewFile(); InputStream in = zipFile.getInputStream(zipEntry); FileOutputStream out = new FileOutputStream(f); try { int c; byte[] by = new byte[BUFFEREDSIZE]; while ((c = in.read(by)) != -1) { out.write(by, 0, c); } // out.flush(); } catch (IOException e) { throw e; } finally { out.close(); in.close(); } } } } private static final int BUFFEREDSIZE = 1024; public static void main(String[] args) { CompressFile bean = new CompressFile(); try { boolean isZip = false; if (isZip) { bean.zip("E:\\aa", "d:/test.zip"); } else { bean.unzip("d:/test.zip", "D:/temp"); } } catch (IOException e) { e.printStackTrace(); } }}
0 0
- 结合Apache的ant.jar解压缩
- java压缩与解压缩文件(利用apache的ant.jar)
- java压缩与解压缩文件(利用apache的ant.jar) .
- java压缩与解压缩文件(利用apache的ant.jar)
- java压缩与解压缩文件(利用apache的ant.jar)
- Java解压缩文件(利用apache的ant包)
- 使用ant.jar实现文件压缩与解压缩
- 使用 apache ant 轻松实现文件压缩/解压缩
- 使用 apache ant 轻松实现文件压缩/解压缩 .
- java代理使用 apache ant实现文件压缩/解压缩
- java 使用Apache ant.jar压缩解压zip--一种简单的实现
- 使用Apache Commons jar进行解压缩-zip解压zip-jar解压jar
- ant编译apache-nutch-2.3.1结合mysql实现爬虫
- Apache Ant运行时Unable to locate tools.jar解决方法
- Apache Ant运行时Unable to locate tools.jar解决方法
- Apache Ant运行时Unable to locate tools.jar解决方法
- Apache Ant运行时Unable to locate tools.jar解决方法
- Apache Ant运行时Unable to locate tools.jar解决方法
- C++ ofstream和ifstream详细用法
- UVALive 6609 Minimal Subarray Length rmq+二分or单调队列
- HDU 1013 Digital Roots
- 编写文件上传和下载要注意的事项
- Java 大数学习之旅
- 结合Apache的ant.jar解压缩
- 稀疏编码(Sparse Coding)的前世今生(一)
- 【Head First】类图关系与代码对应(Java)
- ubuntu 12.04 中gedit打开txt等文件中文乱码的解决方法
- Rigidbody、CharacterController和NavMeshAgent的区别
- Android之旅十八 百度地图环境搭建
- 黑马程序员——Java基础-- 单例模式
- ubuntu中使用git命令与github的代码版本保持同步
- Java关于继承的详细初始化顺序