java gzip xml_Java GZIPInputStream与GZIPOutputStream的使用示例

Java Gzip是一个压缩率非常高的类,它可以将Gzip文件通过GZIPInputStream类读取过来解压缩,也可以将字符串通过GZIPOutputStream类写成Gzip文件,当然了,我们可以把字符串压缩成byte[]数组之后网络传输,这样速度会比没有Gzip压缩的要快得多,请看之前的案例:Java GZIP压缩与解压缩字符串

下面我们将来学习如何使用 Java GZIPInputStream与GZIPOutputStream进行压缩与解压缩GZIP文件吧!package com.journaldev.files;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.zip.GZIPInputStream;

import java.util.zip.GZIPOutputStream;

public class GZIPExample {

public static void main(String[] args) {

//需要压缩的文件

String file = "/Users/pankaj/sitemap.xml";

//将要压缩成gz结尾的文件

String gzipFile = "/Users/pankaj/sitemap.xml.gz";

//gzip压缩文件解压后的文件

String newFile = "/Users/pankaj/new_sitemap.xml";

compressGzipFile(file, gzipFile);

decompressGzipFile(gzipFile, newFile);

}

private static void decompressGzipFile(String gzipFile, String newFile) {

try {

FileInputStream fis = new FileInputStream(gzipFile);

GZIPInputStream gis = new GZIPInputStream(fis);

FileOutputStream fos = new FileOutputStream(newFile);

byte[] buffer = new byte[1024];

int len;

while((len = gis.read(buffer)) != -1){

fos.write(buffer, 0, len);

}

//close resources

fos.close();

gis.close();

} catch (IOException e) {

e.printStackTrace();

}

}

private static void compressGzipFile(String file, String gzipFile) {

try {

FileInputStream fis = new FileInputStream(file);

FileOutputStream fos = new FileOutputStream(gzipFile);

GZIPOutputStream gzipOS = new GZIPOutputStream(fos);

byte[] buffer = new byte[1024];

int len;

while((len=fis.read(buffer)) != -1){

gzipOS.write(buffer, 0, len);

}

//close resources

gzipOS.close();

fos.close();

fis.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

在解压缩gzip文件的时候,如果它不是GZIP格式的文件,则会报“java.util.zip.ZipException: Not in GZIP format”错误,如下所示:java.util.zip.ZipException: Not in GZIP format

at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:164)

at java.util.zip.GZIPInputStream.(GZIPInputStream.java:78)

at java.util.zip.GZIPInputStream.(GZIPInputStream.java:90)

at com.journaldev.files.GZIPExample.decompressGzipFile(GZIPExample.java:25)

at com.journaldev.files.GZIPExample.main(GZIPExample.java:18)

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/java/647.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值