如何在java中读取.gz或.bzip2文件

时间:2014-08-15 20:50:24

标签: java bzip2 gz

我有.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

1 个答案:

答案 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将所有文件压缩到一个包中 - 因此您无法在不解压缩整个包的情况下提取单个文件(或者可能直到达到所需的所有字节)。