📜  在Java中使用GZIP格式压缩和解压文件

📅  最后修改于: 2022-05-13 01:54:45.020000             🧑  作者: Mango

在Java中使用GZIP格式压缩和解压文件

Java.util.zip 包提供了压缩和解压缩文件内容的类。 Java中提供了 FileInputStream、FileOutputStream 和 GZIPOutputStream 类来压缩和解压缩文件。

使用 GZIPOutputStream 压缩文件

程序中使用的方法

  1. read():读取一个字节的数据。存在于 FileInputStream 中。
    int read()
  2. write():写入一个字节的数据,存在于 FileOutputStream 中。
    void write(int b) 

在此示例中,我们在/home/saket/Desktop/GeeksforGeeks/compress 中有一个文本文件。 “GeeksforGeeks”文件夹下的Java驱动器,我们在同一文件夹中压缩和生成 GZip 文件。

// Java program to compress a File
// using GZIPOutputStream class
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;
  
public class GeeksForGeeks
{
    static final String OUTPUT_FILE
            = "/home/saket/Desktop/GeeksforGeeks/compress.gz";
    static final String INPUT_FILE
            = "/home/saket/Desktop//GeeksforGeeks/compress.java";
      
    static void compress()
    {
        byte[] buffer = new byte[1024];
        try
        {
            GZIPOutputStream os = 
                    new GZIPOutputStream(new FileOutputStream(OUTPUT_FILE));
                      
            FileInputStream in =
                    new FileInputStream(INPUT_FILE);
              
            int totalSize;
            while((totalSize = in.read(buffer)) > 0 )
            {
                os.write(buffer, 0, totalSize);
            }
              
            in.close();
            os.finish();
            os.close();
              
            System.out.println("File Successfully compressed");
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
          
    }
      
    public static void main (String[] args)
    {
        compress();
          
    }
}

输出:

File Successfully compressed

运行上述程序后,它将压缩压缩。 Java文件:

使用 GZIPOutputStream 解压文件

// Java program to illustrate 
// Decompressing a File using GZIPOutputStream
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
  
class GeeksForGeeks
{
    static final String INPUT_FILE 
            = "/home/saket/Desktop/GeeksforGeeks/compress.gz";
    static final String OUTPUT_FILE 
            = "/home/saket/Desktop//GeeksforGeeks/decompress.java";
      
    static void decompress()
    {
        byte[] buffer = new byte[1024];
        try
        {
            GZIPInputStream is = 
                    new GZIPInputStream(new FileInputStream(INPUT_FILE));
                      
            FileOutputStream out =
                    new FileOutputStream(OUTPUT_FILE);
              
            int totalSize;
            while((totalSize = is.read(buffer)) > 0 )
            {
                out.write(buffer, 0, totalSize);
            }
              
            out.close();
            is.close();
              
            System.out.println("File Successfully decompressed");
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
          
    }
      
    public static void main (String[] args)
    {
        decompress();
          
    }
}

输出 :

File Successfully decompressed

编译后的当前状态:

注意:这里decom。 Java包含上面的代码。
运行上述程序后,会解压compress.gz和一个名为decompress的文件。将创建Java