InputStream ips = null;
// 取前两个字节
byte[] header = new byte[2];
if (isGzip()) {
try {
BufferedInputStream bis = new BufferedInputStream(connection.getInputStream());
bis.mark(2);
int result = bis.read(header);
// reset输入流到开始位置
bis.reset();
// 判断是否是GZIP格式
int ss = (header[0] & 0xff) | ((header[1] & 0xff) << 8);
if(result!=-1 && ss == GZIPInputStream.GZIP_MAGIC) {
//System.out.println("为数据压缩格式...");
ips= new GZIPInputStream(bis);
} else {
// 取前两个字节
ips= bis;
}
} catch (java.io.IOException e) {
e.printStackTrace();
ips = connection.getInputStream();
}
} else {
ips = connection.getInputStream();
}
判断header中是否包含有gzip
public boolean isGzip() {
boolean gzip = false;
for (String key : this.getHeaders().keySet()) {
if (key.equalsIgnoreCase("Accept-Encoding") && this.getHeaders().get(key).contains("gzip")) {
gzip = true;
break;
}
}
return gzip;
}
分享到:
相关推荐
在服务器端,如果需要支持GZIP压缩,可以检查HTTP请求头中的`Accept-Encoding`字段,判断客户端是否接受GZIP压缩。如果接受,服务器就可以使用`GZIPOutputStream`对响应内容进行压缩,然后发送给客户端。例如: ```...
3. **gzip压缩**: GZ是GNU的gzip文件格式,主要用于减少文件大小。在Java中,可以使用`java.util.zip.GZIPOutputStream`来压缩数据,`java.util.zip.GZIPInputStream`来解压缩。`GZUtil.java`可能包含了压缩和解...
接着,读取输入流的前两个字节,用于判断数据是否是GZIP格式。GZIP流的标识符是0x1f8b,但在这个例子中,开发者发现实际读取到的是0x1e8b,这可能是由于代码处理错误导致的。正确的处理方式是在进行位移操作时,对第...
Apache Commons Compress库是Java社区广泛使用的处理各种压缩格式的库,包括tar.gz。要使用这个库,首先需要将它的jar包添加到项目的类路径中。 1. 添加依赖: 如果你在Maven项目中,可以在pom.xml文件中添加以下...
这个包提供了GZIPOutputStream和ZipOutputStream等类,用于创建GZIP和ZIP格式的压缩文件。例如,通过遍历文件或目录,创建ZipOutputStream,并将每个文件添加到压缩包中,实现文件的压缩。解压缩时,可以使用...