【问题标题】:How to read a .gz or .bzip2 file in java如何在 java 中读取 .gz 或 .bzip2 文件
【发布时间】:2014-08-15 20:50:24
【问题描述】:

我有 .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());
                    }

提前致谢。

~阿克西塔

【问题讨论】:

    标签: java bzip2 gzip


    【解决方案1】:

    .gz 文件扩展名表示使用 GZIP 压缩。 您可以使用GZIPInputStream 在 java 7 SDK 中打开 GZIP:http://docs.oracle.com/javase/7/docs/api/java/util/zip/GZIPInputStream.html

    Java SDK 库不支持 BZIP2 压缩/解压,afaik,您必须使用第三方库,例如 Apache Commons Compress

    您提到的 lib 似乎(从非常简短的角度来看)仅支持 ZIP 格式,而不是 BZIP2 变体的 GZIP - 这是不同的。

    请注意,与 ZIP 压缩不同,GZIP 将所有文件压缩成一个包 - 因此您无法在不解压缩整个包的情况下提取单个文件(或者可能直到您达到所需的所有字节)。

    【讨论】:

      猜你喜欢
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 2019-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      相关资源
      最近更新 更多