java使用gzip实现文件解压缩示例


在Java中,使用`GZIPInputStream`和`FileOutputStream`可以很方便地实现文件的解压缩。下面是一个简单的示例,展示了如何使用Java进行GZIP文件的解压缩操作。


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) {
        String gzipFilePath = "path/to/your/file.gz"; // 压缩文件路径
        String outputFilePath = "path/to/your/decompressed_file"; // 解压后文件路径,不包含扩展名

        decompressFile(gzipFilePath, outputFilePath);
    }

    /**
     * 解压缩GZIP文件
     *
     * @param gzipFilePath 压缩文件路径
     * @param outputFilePath 解压后文件路径
     */
    public static void decompressFile(String gzipFilePath, String outputFilePath) {
        FileInputStream fis = null;
        GZIPInputStream gis = null;
        FileOutputStream fos = null;

        try {
            fis = new FileInputStream(gzipFilePath);
            gis = new GZIPInputStream(fis);
            fos = new FileOutputStream(outputFilePath);

            byte[] buffer = new byte[1024];
            int len;
            while ((len = gis.read(buffer)) != -1) {
                fos.write(buffer, 0, len);
            }

            fos.flush();

            System.out.println("文件解压缩成功,解压后的文件路径为:" + outputFilePath);

        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("文件解压缩失败:" + e.getMessage());
        } finally {
            try {
                if (fos != null) fos.close();
                if (gis != null) gis.close();
                if (fis != null) fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

请确保将`gzipFilePath`和`outputFilePath`变量替换为实际的文件路径。这段代码首先使用`FileInputStream`打开GZIP文件,然后通过`GZIPInputStream`进行读取,并通过`FileOutputStream`写入到解压后的文件中。在读写过程中,使用了一个字节缓冲区来提高效率。最后,不要忘记在`finally`块中关闭所有打开的资源,以避免资源泄漏。