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 错误
Note: finish() method finishes writing compressed data to the output stream without closing the underlying stream.
实现:我们在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中描绘出来。