如何在Java中解压缩GZip文件?

在前面的示例中,我们学习了如何以GZIP格式压缩文件。为了使文件恢复到原始版本,我们现在将学习如何解压缩gzip文件。就像前面的示例一样,我们还将使用FileInputStreamandFileOutputStream类读取压缩的源文件并写出解压缩的文件。虽然GZipOutputStream用于创建gzip文件,但它GZipInputStream是处理解压缩的类。

这是您的代码段:

package org.nhooo.example.zip;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;

public class GZipDecompressExample {
    public static void main(String[] args) {
        // GZip输入和输出文件。
        String sourceFile = "output.gz";
        String targetFile = "data-1.txt";

        try (
            // 创建文件输入流以读取源文件。
            FileInputStream fis = new FileInputStream(sourceFile);

            // 创建一个gzip输入流以解压缩源
            // 由文件输入流定义的文件。
            GZIPInputStream gzis = new GZIPInputStream(fis);

            // 创建文件输出流,其中解压缩结果
            // 将被存储。
            FileOutputStream fos = new FileOutputStream(targetFile)) {

            // 创建一个缓冲区和临时变量
            // 文件解压缩过程。
            byte[] buffer = new byte[1024];
            int length;

            // 从压缩的源文件中读取并写入
            // 解压缩文件。
            while ((length = gzis.read(buffer)) > 0) {
                fos.write(buffer, 0, length);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}