GZIP 介面簡單,適合單一資料流壓縮(非多檔案)。核心在於以 GZIPOutputStream 包裝輸出流、GZIPInputStream 包裝輸入流。
// 壓縮
BufferedReader in = new BufferedReader(new FileReader(args[0]));
BufferedOutputStream out = new BufferedOutputStream(
new GZIPOutputStream(new FileOutputStream("test.gz")));
int c;
while ((c = in.read()) != -1) out.write(c);
in.close(); out.close();
// 解壓縮
BufferedReader in2 = new BufferedReader(new InputStreamReader(
new GZIPInputStream(new FileInputStream("test.gz"))));
String s;
while ((s = in2.readLine()) != null) System.out.println(s);
範例展示典型情況:以 Reader 讀取文字,但 GZIPOutputStream 建構子只接受 OutputStream,故需混合使用舊式位元組流與新式字元流。可透過 InputStreamReader/OutputStreamWriter 轉換。