org.apache.tools.zip.ZipFile类的使用及代码示例

x33g5p2x  于2022-02-05 转载在 其他  
字(10.2k)|赞(0)|评价(0)|浏览(335)

本文整理了Java中org.apache.tools.zip.ZipFile类的一些代码示例,展示了ZipFile类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ZipFile类的具体详情如下:
包路径:org.apache.tools.zip.ZipFile
类名称:ZipFile

ZipFile介绍

[英]Replacement for java.util.ZipFile.

This class adds support for file name encodings other than UTF-8 (which is required to work on ZIP files created by native zip tools and is able to skip a preamble like the one found in self extracting archives. Furthermore it returns instances of org.apache.tools.zip.ZipEntry instead of java.util.zip.ZipEntry.

It doesn't extend java.util.zip.ZipFile as it would have to reimplement all methods anyway. Like java.util.ZipFile, it uses RandomAccessFile under the covers and supports compressed and uncompressed entries. As of Apache Ant 1.9.0 it also transparently supports Zip64 extensions and thus individual entries and archives larger than 4 GB or with more than 65536 entries.

The method signatures mimic the ones of java.util.zip.ZipFile, with a couple of exceptions:

  • There is no getName method.
  • entries has been renamed to getEntries.
  • getEntries and getEntry return org.apache.tools.zip.ZipEntry instances.
  • close is allowed to throw IOException.
    [中]替换java.util.ZipFile
    这个类增加了对UTF-8以外的文件名编码的支持(UTF-8是处理本机ZIP工具创建的ZIP文件所必需的,并且能够跳过像在自解压归档文件中找到的前导。此外,它还返回org.apache.tools.zip.ZipEntry而不是java.util.zip.ZipEntry的实例。
    它不会扩展java.util.zip.ZipFile,因为它无论如何都必须重新实现所有方法。与java.util.ZipFile类似,它在封面下使用RandomAccessFile,并支持压缩和未压缩的条目。从ApacheAnt 1.9.0开始,它还透明地支持Zip64扩展,因此单个条目和归档文件的容量大于4GB或超过65536个条目。
    方法签名模仿java.util.zip.ZipFile的签名,但有几个例外:
    *没有getName方法。
    *条目已重命名为getEntries。
    *getEntries和getEntry返回org.apache.tools.zip.ZipEntry个实例。
    *close允许抛出IOException。

代码示例

代码示例来源:origin: jenkinsci/jenkins

private void unzip(File dir, File zipFile) throws IOException {
  ZipFile zip = new ZipFile(zipFile);
  @SuppressWarnings("unchecked")
  Enumeration<ZipEntry> entries = zip.getEntries();
          mkdirs(p);
        try (InputStream input = zip.getInputStream(e)) {
          IOUtils.copy(input, writing(f));
    zip.close();

代码示例来源:origin: org.apache.ant/ant

int pling = uri.indexOf("!/");
    if (uri.startsWith("jar:file") && pling > -1) {
      zf = new ZipFile(org.apache.tools.ant.launch.Locator
               .fromJarURI(uri), "UTF-8");
      inputStream =
        zf.getInputStream(zf.getEntry(uri.substring(pling + 2)));
    } else {
      URLConnection conn = url.openConnection();
} finally {
  FileUtils.close(inputStream);
  ZipFile.closeQuietly(zf);

代码示例来源:origin: org.apache.ant/ant

/**
 * fetches information from the named entry inside the archive.
 */
protected void fetchEntry() {
  ZipFile z = null;
  try {
    z = new ZipFile(getZipfile(), getEncoding());
    setEntry(z.getEntry(getName()));
  } catch (IOException e) {
    log(e.getMessage(), Project.MSG_DEBUG);
    throw new BuildException(e);
  } finally {
    ZipFile.closeQuietly(z);
  }
}

代码示例来源:origin: org.apache.ant/ant

/**
 * Returns <code>true</code> if the file exists and is signed with
 * the signature specified, or, if <code>name</code> wasn't
 * specified, if the file contains a signature.
 * @param zipFile the zipfile to check
 * @param name the signature to check (may be killed)
 * @return true if the file is signed.
 * @throws IOException on error
 */
public static boolean isSigned(File zipFile, String name)
  throws IOException {
  try (ZipFile jarFile = new ZipFile(zipFile)) {
    if (null == name) {
      return StreamUtils.enumerationAsStream(jarFile.getEntries())
          .anyMatch(e -> e.getName().startsWith(SIG_START) && e.getName().endsWith(SIG_END));
    }
    name = replaceInvalidChars(name);
    boolean shortSig = jarFile.getEntry(SIG_START
          + name.toUpperCase()
          + SIG_END) != null;
    boolean longSig = false;
    if (name.length() > SHORT_SIG_LIMIT) {
      longSig = jarFile.getEntry(
        SIG_START
        + name.substring(0, SHORT_SIG_LIMIT).toUpperCase()
        + SIG_END) != null;
    }
    return shortSig || longSig;
  }
}

代码示例来源:origin: com.github.javahaohao/utils

public static boolean unZipWithoutOverWrite(String unZipFileName,
    String destFileName) {
  File unzipFile = new File(unZipFileName);
  if (StringUtils.isBlank(destFileName) || destFileName.trim().length() == 0)
    destFileName = unzipFile.getParent();
  File destFile;
  ZipFile zipFile = null;
  try {
    zipFile = new ZipFile(unzipFile, "GBK");
    for (Enumeration entries = zipFile.getEntries(); entries
        .hasMoreElements();) {
      ZipEntry entry = (ZipEntry) entries.nextElement();
      destFile = new File(destFileName, entry.getName());
      unZipFile(destFile, zipFile, entry, false); // 执行解压
    }
  } catch (Exception e) {
    log.error("解压ZIP文件异常", e);
    return false;
  } finally {
    try {
      assert zipFile != null;
      zipFile.close();
    } catch (Exception e) {
      log.error("异常", e);
    }
  }
  return true;
}

代码示例来源:origin: org.apache.ant/ant

getLocation());
try (ZipFile zf = new ZipFile(srcF, encoding, scanForUnicodeExtraFields)) {
  boolean empty = true;
  Enumeration<ZipEntry> entries = zf.getEntries();
  while (entries.hasMoreElements()) {
    ZipEntry ze = entries.nextElement();
    try {
      extractFile(fileUtils, srcF, dir,
            is = zf.getInputStream(ze), //NOSONAR
            ze.getName(), new Date(ze.getTime()),
            ze.isDirectory(), mapper);

代码示例来源:origin: org.apache.ant/ant

return getCheckedRef().getInputStream();
final ZipFile z = new ZipFile(getZipfile(), getEncoding());
ZipEntry ze = z.getEntry(getName());
if (ze == null) {
  z.close();
  throw new BuildException("no entry " + getName() + " in "
               + getArchive());
return new FilterInputStream(z.getInputStream(ze)) {
  public void close() throws IOException {
    FileUtils.close(in);

代码示例来源:origin: org.apache.ant/ant

List<String> files)
throws IOException {
try (org.apache.tools.zip.ZipFile zf = new org.apache.tools.zip.ZipFile(file, "utf-8")) {
  Set<String> dirSet = new HashSet<>();
  StreamUtils.enumerationAsStream(zf.getEntries()).forEach(ze -> {
    String name = ze.getName();
    if (ze.isDirectory()) {

代码示例来源:origin: gradle.plugin.com.bettycc.umengauto/core

private static Map<ZipEntry, byte[]> readZipAllEntry(ZipFile file) throws Exception {
    Map<ZipEntry, byte[]> entryMaps = new HashMap<ZipEntry, byte[]>();
    Enumeration<? extends ZipEntry> entries = file.getEntries();
    while (entries.hasMoreElements()) {
      ZipEntry entry = entries.nextElement();

      int len = -1;
      byte[] data = new byte[512];
      InputStream istream = file.getInputStream(entry);
      ByteArrayOutputStream bos = new ByteArrayOutputStream();
      while ((len = istream.read(data, 0, 512)) != -1) {
        bos.write(data, 0, len);
      }
      bos.close();
      istream.close();

      byte[] result = bos.toByteArray();
      entryMaps.put(entry, result);
    }
    return entryMaps;
  }
}

代码示例来源:origin: org.apache.ant/ant

base = fileset.getDir(getProject());
} else if (zfs instanceof ZipFileSet) {
  zf = new ZipFile(zfs.getSrc(getProject()), encoding);
  zf.close();

代码示例来源:origin: org.kantega.openaksess/openaksess-core

List<ZipEntry> entries = Collections.<ZipEntry>list(zipFile.getEntries());
  for(ZipEntry entry : entries) {
    if (isValidEntry(entry)) {
  zipFile.close();
} finally {
  temp.delete();

代码示例来源:origin: net.wasdev.wlp.ant/wlp-anttasks

public static void unzipToDirectory(File file, File destDir) throws IOException {
  ZipFile zipFile = new ZipFile(file);
  try {
    unzipToDirectory(zipFile, destDir);
  } finally {
    ZipFile.closeQuietly(zipFile);
  }
}

代码示例来源:origin: org.kantega.openaksess/openaksess-core

private byte[] getDataFromZipFileEntry(ZipFile zipFile, ZipEntry entry) throws IOException {
  InputStream zis = zipFile.getInputStream(entry);
  ByteArrayOutputStream bos = new ByteArrayOutputStream();
  byte[] buf = new byte[1024];
  int len;
  while ((len = zis.read(buf)) > 0) {
    bos.write(buf, 0, len);
  }
  byte[] data = bos.toByteArray();
  bos.close();
  return data;
}

代码示例来源:origin: org.apache.ant/ant

/**
 * close a zipfile quietly; throw no io fault, do nothing
 * on a null parameter
 * @param zipfile file to close, can be null
 */
public static void closeQuietly(final ZipFile zipfile) {
  if (zipfile != null) {
    try {
      zipfile.close();
    } catch (final IOException e) {
      //ignore
    }
  }
}

代码示例来源:origin: org.apache.ant/ant

/**
 * Add a file entry.
 */
private void addResource(final Resource r, final String name, final String prefix,
             final ZipOutputStream zOut, final int mode,
             final ZipFile zf, final File fromArchive)
  throws IOException {
  if (zf != null) {
    final ZipEntry ze = zf.getEntry(r.getName());
    if (ze != null) {
      final boolean oldCompress = doCompress;
      if (keepCompression) {
        doCompress = (ze.getMethod() == ZipEntry.DEFLATED);
      }
      try (final BufferedInputStream is = new BufferedInputStream(zf.getInputStream(ze))) {
        zipFile(is, zOut, prefix + name, ze.getTime(),
            fromArchive, mode, ze.getExtraFields(true));
      } finally {
        doCompress = oldCompress;
      }
    }
  } else {
    try (final BufferedInputStream is = new BufferedInputStream(r.getInputStream())) {
      zipFile(is, zOut, prefix + name, r.getLastModified(),
          fromArchive, mode, r instanceof ZipResource
          ? ((ZipResource) r).getExtraFields() : null);
    }
  }
}

代码示例来源:origin: qq53182347/liugh-parent

try {
  File sourceFile = new File(sourcePath);
  zipFile = new ZipFile(sourcePath, "gbk");
  if ((!sourceFile.exists()) && (sourceFile.length() <= 0)) {
    throw new Exception("要解压的文件不存在!");
  Enumeration<?> e = zipFile.getEntries();
  while (e.hasMoreElements()) {
    ZipEntry zipEnt = (ZipEntry) e.nextElement();
  try {
    if(null!=zipFile){
      zipFile.close();

代码示例来源:origin: net.mingsoft/ms-util

pathFile.mkdirs();
ZipFile zip = new ZipFile(zipFile);
for (Enumeration entries = zip.getEntries(); entries.hasMoreElements();) {
  ZipEntry entry = (ZipEntry) entries.nextElement();
  String zipEntryName = entry.getName();
  InputStream in = zip.getInputStream(entry);
  String outPath = (descDir + zipEntryName).replaceAll("\\*", "/");
  outPath = new String(outPath.getBytes("utf-8"), "ISO8859-1");

代码示例来源:origin: org.apache.ant/ant

"Only file provider resources are supported"));
try (ZipFile zf = new ZipFile(srcFile, encoding)) {
  StreamUtils.enumerationAsStream(zf.getEntries()).forEach(entry -> {
    Resource r = new ZipResource(srcFile, encoding, entry);
    String name = entry.getName();

代码示例来源:origin: net.wasdev.wlp.ant/wlp-anttasks

private static void unzipToDirectory(ZipFile zipFile, File destDir) throws IOException {
  byte[] buffer = new byte[4096];
  Enumeration entries = zipFile.getEntries();
  while (entries.hasMoreElements()) {
    ZipEntry entry = (ZipEntry) entries.nextElement();
    if (entry.isDirectory()) {
      File dir = new File(destDir, entry.getName());
      InstallUtils.createDirectory(dir);
    } else {
      File file = new File(destDir, entry.getName());
      InstallUtils.createDirectory(file.getParentFile());
      OutputStream out = null;
      InputStream in = null;
      try {
        out = new BufferedOutputStream(new FileOutputStream(file));
        in = zipFile.getInputStream(entry);
        Unzip.copy(in, out, buffer);
      } finally {
        InstallUtils.close(in);
        InstallUtils.close(out);
      }
      Unzip.setFilePermissions(file, entry);
    }
  }
}

代码示例来源:origin: gradle.plugin.com.bettycc.umengauto/core

filename = filepath.substring(index + 1);
ZipFile file = new ZipFile(filepath);
Map<ZipEntry, byte[]> readZipAllEntry = readZipAllEntry(file);
System.out.println("find output dir ....");
  System.out.println("package :" + apkName + " success, take time " + (takeTime) / 1000 + "s " + ms + "ms");
file.close();
long totalTakeTime = System.currentTimeMillis() - start;
long ms = totalTakeTime % 1000;

相关文章