首页 > 网站 > Apache > 正文

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

2024-08-27 18:25:31
字体:
来源:转载
供稿:网友

需要导入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);

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表