Java压缩处理类库:ZeroTurnaround ZIP类库

fmms 13年前
     在 Java 平台上有很多官方的和非官方、第三方的压缩工具包,它们各有各的长处,比如 Oracle 官方的    <a href="/misc/goto?guid=4958317030046899044">java.util.zip 类库</a>,Apache 网站上的    <a href="/misc/goto?guid=4958197391618676300">Apache Commons Compress 类库</a>,或者    <a href="/misc/goto?guid=4958317031556440787">Chilkat Java Zip 类库</a>,但总体说来,这些类库提供都是低级别的 API,操作起来都不是很方便,而今天推荐给大家的这个叫做    <a href="/misc/goto?guid=4958317032356814320" target="_blank">ZeroTurnaround (简称 zt-zip)</a>的压缩类库的特点就是方便、简易,我们可以比较一下,如果用标准的 Java 类库压缩一个目录里的所有文件,你需要写出的代码大概是这样:    <pre class="brush:java; toolbar: true; auto-links: false;">    File dir = new File ("demo");      ZipOutputStream out = new ZipOutputStream (new FileOutputStream ("demo.zip"));      try {        File[] files = dir.listFiles ();        for (int i = 0; i < files.length; i++) {          File file = files[i];          ZipEntry entry = new ZipEntry (file.getName ());          entry.setSize (file.length ());          entry.setTime (file.lastModified ());          out.putNextEntry (entry);          FileInputStream in = new FileInputStream (file);          try {            IOUtils.copy (in, out);          } finally {            IOUtils.closeQuietly (in);          }          out.closeEntry ();        }      } finally {        IOUtils.closeQuietly (out);      }</pre> 而使用 zt-zip 工具包,你的代码就变成了只有一行:    <pre>ZipUtil.pack (<span style="color:#0000ff;">new</span> File ("demo"), <span style="color:#0000ff;">new</span> File ("demo.zip"));</pre>    <p> 你不需要自己去关闭文件的数据流,这个类库的接口自动替你你做了这些。</p>    <p> 可能经常做 Java 压缩编程的人会提到另外一个压缩类库:<a href="http://www.google.com/url?sa=t&rct=j&q=truezip&source=web&cd=1&ved=0CCAQFjAA&url=http%3A%2F%2Ftruezip.java.net%2F&ei=OXXfTpvwG6SfiAfw25CaBQ&usg=AFQjCNGyJttZtt_irANmA9IAR8MauiBJnQ&cad=rja" target="_blank">TrueZIP</a>,这也是一个非常好的类库,而 zt-zip 跟它比起来的一个优势是:消耗内存很少,这是因为 TrueZIP 大量的使用了虚拟机的堆内存,而 zt-zip 却是只是以数据流的形式进行操作,当然这也是 zt-zip 的 API 提供的功能很有针对性、不是 TrueZIP API 那样通用的原因。</p>    <p> 你可以在 Github 上下载这个<a href="/misc/goto?guid=4958317032356814320" target="_blank">类库</a>。</p>    <div id="come_from">     来自:     <a id="link_source2" href="/misc/goto?guid=4958317034655392280" target="_blank">外刊IT评论</a>    </div>