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>