java.util.zip包提供类来压缩和解压缩文件内容。 Java 中提供了 FileInputStream、FileOutputStream 和 GZIPOutputStream 类来压缩和解压缩文件。 GZIPOutputStream 类对于将压缩数据写入GZIP 文件格式。但是,GZIP 不是 zip 工具,它仅用于将文件压缩为 “.gz” 格式,而不是将多个文件压缩为单个存档。
构造函数和执行的相应操作如下:
- GZIPOutputStream(输出流输出):创建具有默认缓冲区大小的新输出流
- GZIPOutputStream(OutputStream out, 布尔值syncFlush):创建具有默认缓冲区大小和指定刷新模式的新输出流。
- GZIPOutputStream(输出流输出,int大小):创建具有指定缓冲区大小的新输出流
- GZIPOutputStream(输出流输出,int大小,布尔syncFlush):创建具有指定缓冲区大小和刷新模式的新输出流
让我们讨论一下涉及到的重要方法,如下:
- 无效写入(字节[] buf,int关闭,intlen): 将字节数组写入压缩输出流。
参数:它需要3个参数,分别如下:
- buf:要写入的数据
- off:数据的起始偏移量
- len:数据长度
异常:IOException:如果发生 I/O 错误
- Note: finish() 方法完成将压缩数据写入输出流,而无需关闭底层流。
实现:我们在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
运行上述程序后,它将压缩生成的文件,通过与上面的采样快照进行比较,可以从下面的快照中描绘出该文件。
相关用法
- Java GregorianCalendar computeFields()用法及代码示例
- Java GregorianCalendar computeTime()用法及代码示例
- Java GregorianCalendar getActualMaximum()用法及代码示例
- Java GregorianCalendar getActualMinimum()用法及代码示例
- Java GregorianCalendar getGregorianChange()用法及代码示例
- Java GregorianCalendar roll()用法及代码示例
- Java GregorianCalendar setGregorianChange()用法及代码示例
- Java GregorianCalendar add()用法及代码示例
- Java GregorianCalendar clone()用法及代码示例
- Java GregorianCalendar equals()用法及代码示例
- Java GregorianCalendar getGreatestMinimum()用法及代码示例
- Java GregorianCalendar getLeastMaximum()用法及代码示例
- Java GregorianCalendar getMaximum()用法及代码示例
- Java GregorianCalendar getMinimum()用法及代码示例
- Java GregorianCalendar getTimeZone()用法及代码示例
- Java GregorianCalendar hashCode()用法及代码示例
- Java GregorianCalendar isLeapYear()用法及代码示例
- Java GregorianCalendar setTimeZone()用法及代码示例
- Java Guava Booleans.asList()用法及代码示例
- Java Guava Floats.asList()用法及代码示例
- Java Guava Lists.partition()用法及代码示例
- Java Guava Bytes.asList()用法及代码示例
- Java Guava Lists.reverse()用法及代码示例
- Java Guava Doubles.asList()用法及代码示例
- Java Guava Shorts.asList()用法及代码示例
注:本文由纯净天空筛选整理自karangarg218大神的英文原创作品 GZIPOutputStream Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。