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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。