一、GZIP压缩
GZIP常常用在linxu环境下,是一种非常简单的压缩算法。在Java实现API中,它仅仅包含两个实现类:GZIPInputStream和GZIPOutputStream。 GZIPOutputStream类用于压缩,GZIPInputStream类用于解压缩。
**1.压缩,**封装方法如下:
public static void compress(InputStream is, OutputStream os)
throws Exception {
GZIPOutputStream gos = new GZIPOutputStream(os);
int count;
byte data[] = new byte[8];
while ((count = is.read(data, 0, 8)) != -1) {
gos.write(data, 0, count);
}
gos.finish();
gos.flush();
gos.close();
}
记得完成操作后,调用finish方法和flush方法,在main方法中调用如下:
public static void main(String[] args) {
try {
FileInputStream inputStream=new FileInputStream("d://ccc.txt");
FileOutputStream outputStream=new FileOutputStream("d://abc.gzip");
compress(inputStream,outputStream);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
**2、解压缩,**封装方法如下:
public static void decompress(InputStream is, OutputStream os)
throws Exception {
GZIPInputStream gis = new GZIPInputStream(is);
int count;
byte data[] = new byte[8];
while ((count = gis.read(data, 0, 8)) != -1) {
os.write(data, 0, count);
}
gis.close();
}
在main方法调用如下,把刚才压缩的文件解压缩。
public static void main(String[] args) {
try {
FileInputStream inputStream=new FileInputStream("d://abc.gzip");
FileOutputStream outputStream=new FileOutputStream("d://ccc.txt");
decompress(inputStream,outputStream);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}