Java GZIP 示例 - 压缩和解压缩文件

GZIP 是 Unix 系统中最喜欢的压缩文件工具之一,我们可以以 GZIP 格式压缩单个文件,但无法使用 GZIP 作为 ZIP 文件来压缩和存档目录。

Java GZIP 使用

GZIP, Java GZIP Example 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的例子。

Published At
Categories with 技术
Tagged with
comments powered by Disqus