在 Java 平台上有很多官方的和非官方、第三方的压缩工具包,它们各有各的长处,比如 Oracle 官方的 java.util.zip 类库,Apache 网站上的 Apache Commons Compress 类库,或者 Chilkat Java Zip 类库,但总体说来,这些类库提供都是低级别的 API,操作起来都不是很方便,而今天推荐给大家的这个叫做 ZeroTurnaround (简称 zt-zip)的压缩类库的特点就是方便、简易,我们可以比较一下,如果用标准的 Java 类库压缩一个目录里的所有文件,你需要写出的代码大概是这样:
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);
}
而使用 zt-zip 工具包,你的代码就变成了只有一行:
ZipUtil.pack (new File ("demo"), new File ("demo.zip"));
你不需要自己去关闭文件的数据流,这个类库的接口自动替你你做了这些。
可能经常做 Java 压缩编程的人会提到另外一个压缩类库:TrueZIP,这也是一个非常好的类库,而 zt-zip 跟它比起来的一个优势是:消耗内存很少,这是因为 TrueZIP 大量的使用了虚拟机的堆内存,而 zt-zip 却是只是以数据流的形式进行操作,当然这也是 zt-zip 的 API 提供的功能很有针对性、不是 TrueZIP API 那样通用的原因。
你可以在 Github 上下载这个类库。
2
0
来自: 外刊IT评论
相关阅读:
· Java已死?九百万程序员说不(2012-05-21 08:52)· Lady Java(2012-05-18 09:12)
· Java 7u4开始支持OSX(2012-05-10 20:03)
还没有人对此新闻发表评论,第一个发表评论。
