我正在做一个http代理,在解压响应时遇到了一个问题,这些响应是在客户端向服务器发出请求后从服务器发出的。
E、 g.客户端发送gethttps://stackoverflow.com/questions/some_question . 服务器分几个部分发送响应。我使用以下方法对响应部分进行解压缩。
public static void gzipToString(ByteBuf buf) throws IOException {
Reader reader = null;
reader = new InputStreamReader(new GZIPInputStream(new ByteBufInputStream(buf)));
while (true) {
int ch = reader.read();
if (ch==-1) {
break;
}
System.out.print((char)ch);
}
}
在回应的第一部分
<!DOCTYPE html>
<html itemscope itemtype="http://schema.org/QAPage">
<head>
<title>java - GZIPInputStream to String - Stack Overflow</title>
<link rel="shortcut icon" href="https://cdn.sstatic.net/Sites/stackoverflow/img/favicon.ico?v=4f32ecc8f43d">
<link rel="apple-touch-icon image_src" href="https://cdn.sstatic.net/Sites/stackoverflow/img/apple-touch-icon.png?v=c78bd457575a">
<link rel="search" type="application/opensearchdescription+xml" title="Stack Overflow" href="/opensearch.xml">
<meta name="twitter:card" content="summary">
<meta name="twitter:app:id:googleplay" content="comjava.io.EOFException: Unexpected end of ZLIB input stream
在某种程度上,我得到了comjava。io。EOFException:ZLIB输入流意外结束
其余的响应将在这一行出现例外情况
reader = new InputStreamReader(new GZIPInputStream(new ByteBufInputStream(buf)));
java.util.zip.ZipException: Not in GZIP format
at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:165)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:79)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:91)
at com.verizon.ga.filter.ProxyHttpFilters.gzipToString3(ProxyHttpFilters.java:143)
at com.verizon.ga.filter.ProxyHttpFilters.serverToProxyResponse(ProxyHttpFilters.java:73)
事实上,在第一次响应时,我得到了EOFException,这使我认为要正确地解压缩响应,我需要将响应的所有部分放在一起。
但由于某些原因,所有其他部分返回的不是GZIP格式。据我所知,只有第一部分有GZIP头。还有一些,虽然是GZIP压缩,但没有头。
我该怎么办?
你不能把一个GZIPInputStream放在一个ByteBuf的前面,这毫无意义:GZIPInputStream对一个完整的输入流进行操作。请看我的答案:https://stackoverflow.com/a/48047974/839733
然后我在两个压缩文件上运行以下管道。 这将导致我的bucket的以下状态: 如您所见,由pbzip2压缩的未压缩文件太小,无法正确解压缩。似乎只有第一个块被解压缩,其余的都被丢弃了。 我用pbzip2压缩了很多文件,我希望不改变它们的压缩方式。 对如何解决这个问题有什么建议吗?这甚至可以用于使用pbzip2压缩的文件吗?
问题内容: 这就是问题所在。我有sample.gz文件,大小约为60KB。我想解压缩该文件的前2000个字节。我遇到了CRC检查失败的错误,我猜是因为gzip CRC字段出现在文件末尾,并且它需要整个gzip压缩文件进行解压缩。有办法解决这个问题吗?我不在乎CRC检查。即使由于CRC错误而无法解压缩,也可以。有没有办法解决这个问题并解压缩部分.gz文件? 我到目前为止的代码是 遇到的错误是 还可以
问题内容: 我们如何分别压缩每个文件? 我不想将所有文件都放在一个大的tar中。 问题答案: 您可以使用 注意: 这将分别压缩每个文件并 删除 原始文件。 使用()选项保留原始文件。 如果您由于外壳程序的限制而拥有大量文件,则可能无法使用 要并行运行 gzip 。
本文向大家介绍Android Zip解压缩工具类分享,包括了Android Zip解压缩工具类分享的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android Zip解压缩工具类的具体代码,供大家参考,具体内容如下 添加权限 在具体的场景中测试一下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
tar [-]c|x|u|r|t[z|j][v] -f 归档文件 [待打包文件] 将多个文件打包为一个归档文件,可以在打包的同时进行压缩。支持的格式为 tar(归档)、gz(压缩)、bz2(压缩率更高,比较耗时) 操作选项 -c 创建 -x 解包 -u 更新 -r 添加 -t 查看 -d 比较压缩包内文件和文件 -A 将 tar 文件添加到归档文件中 格式选项 -z 使用 gz 压缩格式 -j 使
我正在使用lz4压缩并将数据写入hive表,该表有20个文件,每个文件在HDFS上都是15G,并且该表的每个文件名都以lz4结尾,例如,。 当我从这个表中运行select count(1)时,它只启动了20个映射器,这意味着lz4 splittable不能生效。 据说lz4支持针对文本文件的可拆分性,所以我想问一下我应该做什么或其他步骤来实现这一点。