apache ant进行zip解压缩操作示例分享

需要导入ant.jar包,apache网站(http://ant.apache.org/bindownload.cgi)下载即可。

代码如下:

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipOutputStream;

import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Expand;
import org.apache.tools.zip.ZipEntry;

import com.xyq.io.util.CloseIoUtil;

public class ZipUtil {

private static final String ENCODE = "UTF-8";

public static void zip(String inputFilePath, String zipFileName) {

File inputFile = new File(inputFilePath);
  if (!inputFile.exists())
   throw new RuntimeException("原始文件不存在!!!");
  File basetarZipFile = new File(zipFileName).getParentFile();
  if (!basetarZipFile.exists() && !basetarZipFile.mkdirs())
   throw new RuntimeException("目标文件无法创建!!!");
  BufferedOutputStream bos = null;
  FileOutputStream out = null;
  ZipOutputStream zOut = null;
  try {
   // 创建文件输出对象out,提示:注意中文支持
   out = new FileOutputStream(new String(zipFileName.getBytes(ENCODE)));
   bos = new BufferedOutputStream(out);
   // 將文件輸出ZIP输出流接起来
   zOut = new ZipOutputStream(bos);
   zip(zOut, inputFile, inputFile.getName());
   CloseIoUtil.closeAll(zOut, bos, out);

} catch (Exception e) {
   e.printStackTrace();
  }
 }

private static void zip(ZipOutputStream zOut, File file, String base) {

try {
   // 如果文件句柄是目录
   if (file.isDirectory()) {
    // 获取目录下的文件
    File[] listFiles = file.listFiles();
    // 建立ZIP条目
    zOut.putNextEntry(new ZipEntry(base + "/"));
    base = (base.length() == 0 ? "" : base + "/");
    if (listFiles != null && listFiles.length > 0)
     // 遍历目录下文件
     for (File f : listFiles)
      // 递归进入本方法
      zip(zOut, f, base + f.getName());
   }
   // 如果文件句柄是文件
   else {
    if (base == "") {
     base = file.getName();
    }
    // 填入文件句柄
    zOut.putNextEntry(new ZipEntry(base));
    // 开始压缩
    // 从文件入流读,写入ZIP 出流
    writeFile(zOut, file);
   }

} catch (Exception e) {
   e.printStackTrace();
  }
 }

private static void writeFile(ZipOutputStream zOut, File file)
   throws IOException {

FileInputStream in = null;
  BufferedInputStream bis = null;
  in = new FileInputStream(file);
  bis = new BufferedInputStream(in);
  int len = 0;
  byte[] buff = new byte[2048];
  while ((len = bis.read(buff)) != -1)
   zOut.write(buff, 0, len);
  zOut.flush();
  CloseIoUtil.closeAll(bis, in);
 }

/****
  * 解压
  *
  * @param zipPath
  *            zip文件路径
  * @param destinationPath
  *            解压的目的地点
  * @param ecode
  *            文件名的编码字符集
  */
 public static void unZip(String zipPath, String destinationPath) {

File zipFile = new File(zipPath);
  if (!zipFile.exists())
   throw new RuntimeException("zip file " + zipPath
     + " does not exist.");

Project proj = new Project();
  Expand expand = new Expand();
  expand.setProject(proj);
  expand.setTaskType("unzip");
  expand.setTaskName("unzip");
  expand.setSrc(zipFile);
  expand.setDest(new File(destinationPath));
  expand.setEncoding(ENCODE);
  expand.execute();
  System.out.println("unzip done!!!");
 }

public static void main(String[] args) {

String dir = new String("F:\\我的备份\\文档\\MyEclipse+9.0正式版破解与激活(亲测可用)");
  dir = new String("F:/111.JPG");
  zip(dir, "f:/BZBXB/zipant.zip");
  unZip("f:/BZBXB/zipant.zip", "f:/XX/xx/");
 }
}

(0)

相关推荐

  • Apache Ant自动化脚本入门教程及常用命令介绍

    一 Ant简介 Apache Ant是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的自动化构建.它是Apache软件基金会JAKARTA目录中的一个子项目,它有以下的优点: 跨平台性.Ant是纯Java语言编写的,所以具有很好的跨平台性 操作简单.Ant是由一个内置任务和可选任务组成的.Ant运行时需要一个XML文件(构建文件). Ant通过调用target树,就可以执行各种任务.由于Ant构建文件 是XML格式的文件,所以很容易维护和书写,而且结构清晰

  • Windows下apache ant安装、环境变量配置教程

    一.安装ant 到官方主页http://ant.apache.org下载新版(目前为Ant1.8.1)的ant,得到的是一个apache-ant-1.8.1-bin.zip的压缩包.将其解压到你的硬盘上,例如:C:\apache-ant-1.8.1. 二.配置环境变量 window中设置ant环境变量: ANT_HOME    C:/ apache-ant-1.8.1 path        C:/ apache-ant-1.8.1/bin classpath   C:/apache-ant-1

  • ubuntu 14.04 安装 apache ant教程

    去官网下载最新版本的ant 解压下载下来的.tar.gz文件: tar zxvf ....tar.gz 将解压出来的文件移动到/opt/下:sudo mv apache-ant-1.9.4 /opt/ 配置环境变量:sudo vim /etc/environment,在原来基础上添加以下文字,然后保存退出(部分是jdk安装时的配置): ANT_HOME=/opt/apache-ant-1.9.2 export PATH=$JAVA_HOME/bin:$PATH:$ANT_HOME/bin exp

  • apache ant进行zip解压缩操作示例分享

    需要导入ant.jar包,apache网站(http://ant.apache.org/bindownload.cgi)下载即可. 复制代码 代码如下: import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOEx

  • Android Zip解压缩工具类分享

    本文实例为大家分享了Android Zip解压缩工具类的具体代码,供大家参考,具体内容如下 package com.example.zip.commons.utils; import android.util.Log; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.ArrayList

  • commons io文件操作示例分享

    复制代码 代码如下: package com.pzq.io;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.StringReader;import java.nio.charset.Charset;import java.util.ArrayList;

  • c#的时间日期操作示例分享(c#获取当前日期)

    1.给定时间戳返回指定的时间格式 复制代码 代码如下: private string StampToDate(string timeStamp,string format){ DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); long lTime = long.Parse(timeStamp + "0000000"); TimeSpan toNow = new TimeS

  • c语言链表操作示例分享

    复制代码 代码如下: #include <stdio.h>#include <stdlib.h>#include <conio.h>/*以下是为了构建线性链表而定义的结构体*/typedef struct chaink{    char c;    struct chaink * next;    }ck;ck * chain(ck *,int);int print(ck *,int);/*以下是main函数*/int main(void){    printf(&qu

  • GO语言操作Elasticsearch示例分享

    目录 Elasticsearch简介 连接Elasticsearch 创建索引 创建model结构体 初始化model 创建索引 搜索数据 创建返回结构体 搜索数据 解析数据 修改数据 单条修改 批量修改 删除数据 单条删除 批量删除 Elasticsearch简介 Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上. Lucene 可以说是当下最先进.高性能.全功能的搜索引擎库–无论是开源还是私有. 连接Elasticsearch

  • python3实现的zip格式压缩文件夹操作示例

    本文实例讲述了python3实现的zip格式压缩文件夹操作.分享给大家供大家参考,具体如下: 思路:先把第一级目录中的文件进行遍历,如果是文件,则把它连同当前路径一起加入result(list),如果是子目录,则在整个目录上继续深度优先遍历,直到所有的文件都被加入.主要使用python3中zipfile模块: class zipfile.ZipFile(file [,mode [,compression [,allowZip64 ] ] ] ) 参数说明: 1.第一个参数file可以是文件(字符

  • Java滚动数组计算编辑距离操作示例

    本文实例讲述了Java滚动数组计算编辑距离操作.分享给大家供大家参考,具体如下: 编辑距离(Edit Distance),也称Levenshtein距离,是指由一个字符串转换为另一个字符串所需的最少编辑次数. 下面的代码摘自org.apache.commons.lang.StringUtils 用法示例: StringUtils.getLevenshteinDistance(null, *) = IllegalArgumentException StringUtils.getLevenshtei

  • Java解压zip文件完整代码分享

    关于Java解压zip文件,我觉得也没啥好多说的,就是干呗..代码如下: package com.lanyuan.assembly.util; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; i

随机推荐