GZIP 是 Unix 系统中最喜欢的压缩文件工具之一,我们可以以 GZIP 格式压缩单个文件,但无法使用 GZIP 作为 ZIP 文件来压缩和存档目录。
Java GZIP 使用
Here is a simple java GZIP example program showing how can we compress a file to GZIP format and then decompress the GZIP file to create a new file.
GZIPExample.java
1package com.journaldev.files;
2
3import java.io.FileInputStream;
4import java.io.FileOutputStream;
5import java.io.IOException;
6import java.util.zip.GZIPInputStream;
7import java.util.zip.GZIPOutputStream;
8
9public class GZIPExample {
10
11 public static void main(String[] args) {
12 String file = "/Users/pankaj/sitemap.xml";
13 String gzipFile = "/Users/pankaj/sitemap.xml.gz";
14 String newFile = "/Users/pankaj/new_sitemap.xml";
15
16 compressGzipFile(file, gzipFile);
17
18 decompressGzipFile(gzipFile, newFile);
19
20 }
21
22 private static void decompressGzipFile(String gzipFile, String newFile) {
23 try {
24 FileInputStream fis = new FileInputStream(gzipFile);
25 GZIPInputStream gis = new GZIPInputStream(fis);
26 FileOutputStream fos = new FileOutputStream(newFile);
27 byte[] buffer = new byte[1024];
28 int len;
29 while((len = gis.read(buffer)) != -1){
30 fos.write(buffer, 0, len);
31 }
32 //close resources
33 fos.close();
34 gis.close();
35 } catch (IOException e) {
36 e.printStackTrace();
37 }
38
39 }
40
41 private static void compressGzipFile(String file, String gzipFile) {
42 try {
43 FileInputStream fis = new FileInputStream(file);
44 FileOutputStream fos = new FileOutputStream(gzipFile);
45 GZIPOutputStream gzipOS = new GZIPOutputStream(fos);
46 byte[] buffer = new byte[1024];
47 int len;
48 while((len=fis.read(buffer)) != -1){
49 gzipOS.write(buffer, 0, len);
50 }
51 //close resources
52 gzipOS.close();
53 fos.close();
54 fis.close();
55 } catch (IOException e) {
56 e.printStackTrace();
57 }
58
59 }
60
61}
在解压 GZIP 文件时,如果它不是 GZIP 格式,则将丢弃以下例外。
1java.util.zip.ZipException: Not in GZIP format
2 at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:164)
3 at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:78)
4 at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:90)
5 at com.journaldev.files.GZIPExample.decompressGzipFile(GZIPExample.java:25)
6 at com.journaldev.files.GZIPExample.main(GZIPExample.java:18)
这就是Java GZIP的例子。