📜  Java的GZIPOutputStream 类

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

Java的GZIPOutputStream 类

Java.util.zip提供了压缩和解压缩文件内容的类。 Java中提供了 FileInputStream、FileOutputStream 和 GZIPOutputStream 类来压缩和解压缩文件。 GZIPOutputStream 类对于以GZIP文件格式写入压缩数据很有用。但是,GZIP 不是 zip 工具,它仅用于将文件压缩为“.gz”格式,而不是将多个文件压缩为一个存档。

构造函数和执行的相应动作如下:

  • GZIPOutputStream(OutputStream out):创建一个具有默认缓冲区大小的新输出流
  • GZIPOutputStream(OutputStream out, boolean syncFlush):创建一个具有默认缓冲区大小和指定刷新模式的新输出流。
  • GZIPOutputStream(OutputStream out, int size):创建具有指定缓冲区大小的新输出流
  • GZIPOutputStream(OutputStream out, int size, boolean syncFlush):使用指定的缓冲区大小和刷新模式创建一个新的输出流

下面我们来讨论一下所涉及的重要方法,具体如下:

  • void write(byte[] buf, int off, int len): 将字节数组写入压缩的输出流。

参数:它需要3个参数,分别如下:

  • buf:要写入的数据
  • off:数据的起始偏移量
  • len:数据长度

异常: IOException:如果发生了 I/O 错误



实现:我们在D:/Myfolder/New.txt中有一个文本文件,在这个文本文件中写入了“Hello World”。我们正在压缩此文本文件 (New.txt) 并在同一文件夹中生成 GZip 文件。它也如下图所示:

例子

Java
// Java Program to Illustrate GZIPOutputStream class
  
// Importing required classes
import java.io.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
  
// Main class
class GFG {
  
    // Main driver method
    public static void main(String[] args) throws Exception
    {
        // Existing file path
        String file = "D:/Myfolder/New.txt";
        
        // Path where we want the compression of the file
        String gzipFile = "D:/Myfolder/compress.gz";
  
        // Reading the text file
        FileInputStream fis = new FileInputStream(file);
        
        // Creating the compressed file
        FileOutputStream fos
            = new FileOutputStream(gzipFile);
        
        // Object of Fileoutstream passed
        GZIPOutputStream gzipOS = new GZIPOutputStream(fos);
  
        byte[] buffer = new byte[1024];
  
        int len;
  
        // Writing the data to file until -1 reached(End of
        // file)
        while ((len = fis.read(buffer)) != -1) {
  
            gzipOS.write(buffer, 0, len);
        }
  
        // Closing the resources
        // using standard close() method
        gzipOS.close();
        fos.close();
        fis.close();
  
        // Display message on the console in order to
        // illustrate successful execution of the program
        System.out.println("File successfully compressed");
    }
}


输出:

File successfully compressed

运行上面的程序后,它会压缩生成的文件,通过与上面的采样快照进行比较,可以从下面的snapsh中描绘出来。