是否有任何Java压缩工具
问题描述:
我需要(联合国)压缩一些文件和一些谷歌搜索后,我还没有发现任何工具做这件事。我知道我可以使用内置的java.uitl.zip。*类来完成它,但没有任何实用工具,这会使它更容易,最好是这样的:是否有任何Java压缩工具
SomeClass.unzip(“file_name.zip”, “目标目录”);
或
SomeClass.zip( “source_directory中”, “target_file_name.zip”,递归地);
我不想处理流。不仅仅是文件,或更好的只是文件名...
答
怎么样在这个问题:“What’s a good compression library for Java?”中提到的Deflater/Inflater类。
我知道在Java提出目前的界面,基于流,而不是“文件名”为主,但根据对Java compression下面的文章,这是很容易建立一个围绕,一个实用工具类:
对于例如,基于文件名的解压缩函数看起来像:
import java.io.*;
import java.util.zip.*;
public class UnZip {
final int BUFFER = 2048;
public static void main (String argv[]) {
try {
BufferedOutputStream dest = null;
FileInputStream fis = new
FileInputStream(argv[0]);
ZipInputStream zis = new
ZipInputStream(new BufferedInputStream(fis));
ZipEntry entry;
while((entry = zis.getNextEntry()) != null) {
System.out.println("Extracting: " +entry);
int count;
byte data[] = new byte[BUFFER];
// write the files to the disk
FileOutputStream fos = new
FileOutputStream(entry.getName());
dest = new
BufferedOutputStream(fos, BUFFER);
while ((count = zis.read(data, 0, BUFFER))
!= -1) {
dest.write(data, 0, count);
}
dest.flush();
dest.close();
}
zis.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
答
也许Compress from Apache Commons可以帮助你。
+0
我不喜欢在这里是我总是必须处理流。我觉得它非常简单易用。唯一要处理的是文件,实际上是文件名... – Juraj 2009-08-06 11:03:03
http://www.1your.com/drupal/unziparchivedorcompressedfilesinJava – pjp 2009-08-06 09:11:55
刚刚添加了一个基于文件名的例子 – VonC 2009-08-06 11:27:49