我有.gz和.bzip2文件,我需要将其解压缩并显示出来。我看了几个地方,并提到使用zip4j实用程序。我可以用它来提取和显示文件吗?请告诉我。
我引用了帖子Uncompress BZIP2 archive,并尝试按如下方式实现,但我不确定要传递给FileOutputStream的是什么,它给了我一个错误。另外,是否有可能在未压缩后创建一个文件对象。请协助。再次感谢您的帮助。
if (getExtension(filename).equals("bz2")) {
try {
FileInputStream fin = new FileInputStream("C:\\temp\\test.bz2");
BufferedInputStream in = new BufferedInputStream(fin);
FileOutputStream out = new FileOutputStream("archive.tar");
BZip2CompressorInputStream bzIn = new BZip2CompressorInputStream(in);
int buffersize = 1024;
final byte[] buffer = new byte[buffersize];
int n = 0;
while (-1 != (n = bzIn.read(buffer))) {
out.write(buffer, 0, n);
}
out.close();
bzIn.close();
}
catch (Exception e) {
throw new Error(e.getMessage());
}
提前致谢。
〜Akshitha
答案 0 :(得分:2)
.gz文件扩展名是使用GZIP压缩的指示。
您可以使用GZIPInputStream
在java 7 SDK中打开GZIP:http://docs.oracle.com/javase/7/docs/api/java/util/zip/GZIPInputStream.html
Java SDK库不支持BZIP2压缩/解压缩,您必须使用第三方库,例如Apache Commons Compress
你提到的lib似乎(从一个非常简短的视图)仅支持ZIP格式,而不是BZIP2变体的GZIP - 它们是不同的。
请注意,与ZIP压缩不同,GZIP将所有文件压缩到一个包中 - 因此您无法在不解压缩整个包的情况下提取单个文件(或者可能直到达到所需的所有字节)。