问题标签 [gzipinputstream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
323 浏览

java - 分块压缩数据的解压

我需要逐块下载压缩数据并将其附加到文件中。问题是当我从 HTTP conn 读取时,它不会一次发送总压缩字节数组(流)。我的应用程序在之前发送的字节数组的剩余字节中寻找 Gzip 标头。我怎样才能强制http一次性发送字节数组的压缩实例。这是我的代码片段,它将数据压缩并将其添加到文件中。

解压功能:-

0 投票
2 回答
2137 浏览

java - 大小限制 gzipinputstream

GZIP 的大小限制为 4GB,从http://www.gzip.org/#faq10获得 。上面的链接中提到了一些补丁,可以读取超过 4GB 的文件。

我正在使用 GZIPInputStream 读取 .gz 文件。

而且我也能够读取超过 4GB 的大小。我知道我正在混淆 java 中的输入流和实际的 gzip 可执行文件。

但我想知道这是否可能是一个问题?

例如 - 是否会出现我无法在 java 中读取 6Gb .gz 文件的情况?直到现在我试过了,我没有遇到任何问题。

简而言之,gzip文件大小限制和java中的gzipinputstream之间有关系吗?

0 投票
1 回答
608 浏览

java - GZipInputStream .read() 将零插入缓冲区

我有一个奇怪的程序,其中 GzipInputStream 零填充缓冲区的一部分。我有幸知道字节在流中应该是什么样子,我可以看到缓冲区被 8 个正确字节和 12 个零(不应该为零)填充

字节应如下所示----> 0 20 82 22 -91 27 -96 65 66 65 88 32 32 32 32 81 32 0 0 0 100 78

字节实际上看起来像这样---> 0 20 82 22 -91 27 -96 65 66 65 0 0 0 0 0 0 0 0 0 0 0 0

前两个字节表示一个整数,它确定前两个之后的可变长度(以字节为单位)有效负载的大小。所以在这个例子中,第一个字节是 0 20,在 BIG_ENDIAN 中,这给了我们一个 20 字节的后续有效负载大小。

这是我的阅读代码

所以前两个字节是有效负载数组中的字节,后 20 个字节是 messageBytes 中的字节。想不通

由于 NPE 修改了代码

0 投票
3 回答
32742 浏览

java - Java:创建 GZIPInputStream 时出错:不是 GZIP 格式

我正在尝试使用以下 Java 代码来压缩和解压缩字符串。但是从新的 ByteArrayInputStream 对象中创建新的 GZipInputStream 对象的行会引发“java.util.zip.ZipException: Not in GZIP format”异常。有谁知道如何解决这个问题?

0 投票
1 回答
2893 浏览

json - Graylog 服务器无法通过 TCP 读取 Gelf 消息 :: GELFDispatcher - 无法处理 GELF 消息 :: 无法解压缩 GELF 消息有效负载

我正在尝试通过 tcp 将以下 json 写入 graylog 服务器:

以下是通过网络传输的实际压缩字节:

并且 graylog 服务器抛出以下异常:

写入 UDP 端口时完全相同的消息通过。

负责在线写入字节的 C# 代码片段:

任何提示/建议都非常感谢。

Graylog jira链接Github 问题链接

0 投票
6 回答
3635 浏览

java - 一次将 gzip 文件读取到 byte[]

在代码中

,如何通过知道文件解压缩长度来优化磁盘空间使用而不创建大字节[]?

根据这个答案,没有这种方法。

这个想法是使用这个 byte[] 来调用

出于这个原因,我需要一个包含所有内容且没有额外零的字节 []。

0 投票
0 回答
292 浏览

java - 调试 gzip 错误的最佳方法

我们有一个大部分时间都运行良好的应用程序。

值得注意的是,如果我们在发送数据进行渲染时关闭服务器和客户端之间的压缩(gzip),它总是有效的。

当我们打开 gzip(首选模式)时 - 有时 - 很少但有时 - 我们会遇到解压缩流失败,如下所示:

注意我们得到双>>的结尾。

我们可以在几个查询响应上复制该行为,但不是全部,也不是在所有环境中。

我们认为问题已经缩小到正在压缩流的服务器端,因为我们有 Firefox 和 javasGZIPInputStream都以相同的方式解密流(我们不认为 Firefox 使用GZIPInputStream

关于如何进一步调试的任何提示?中的任何已知错误GZIP

谢谢你。

0 投票
0 回答
374 浏览

java - App Engine:在 Java 中获取和解压缩大型 Gzipped XML 文件的 URL

我正在尝试从 URL 中检索 gzip 后的 XML 文件。我的问题是,GZipInputStream在生产中使用解压缩时,我得到的内容似乎被截断了。我最多只能读取 xml 的一小部分。

此代码始终只读取 xml 的一小部分。多次运行它会显示完全相同的结果。我已经尝试过先下载二进制内容,使用 aByteArrayOutputStream.数组的大小与我下载的文件完全相同。但是,当我使用GZipInputStream解压缩字节数组时,我仍然得到相同的截断字符串。

顺便说一句,在本地一切正常,所以我被引导相信在GZipInputStream某种程度上受限于GAE. 有谁知道我怎么能解决这个问题?

0 投票
2 回答
2687 浏览

java - 读取 GZIP 文件时 GZIPInputStream 抛出异常

我正在尝试从公共匿名 ftp 读取文件,但遇到了问题。我可以很好地读取纯文本文件,但是当我尝试读取 gzip 文件时,我得到了这个异常:

我尝试下载文件并使用FileInputStream包装在 a 中GZIPInputStream并遇到完全相同的问题,所以我认为这不是 FTP 客户端(即 apache)的问题。

这是一些重现问题的测试代码。它只是试图打印到标准输出:

我找不到任何关于为什么会发生这种情况的文档,并且通过调试器中的代码跟踪它并没有让我到任何地方。我觉得我错过了一些明显的东西。

编辑:我手动下载了文件并使用 GZIPInputStream 将其读入,并且能够很好地打印出来。我已经用 2 个不同的 Java FTP 客户端尝试过这个

0 投票
2 回答
556 浏览

java - 我应该如何处理大型(70MB 未压缩)字节流的解压缩而不溢出堆?

我正在为我们的一些系统之间的交互实施 GZIP 压缩。这些系统是用 Java 和 C# 编写的,因此双方都使用 GZIP 流,因为它们具有标准库支持。

在 C# 方面,一切正常,包括我们最大的测试文件(70MB 未压缩),但是我们遇到了 Java 堆空间不足的问题。我们已尝试将堆大小增加到 IDE 的容量,但问题仍未解决。

我已经采取了一些措施来尝试优化 Java 代码,但似乎没有什么可以阻止数据堆积在堆中。有没有好的方法来处理这个?下面是我当前(处理较小的流)解决方案的一个子集。

编辑:根据@MarkoTopolnik 的建议修改了以下代码。通过更改,崩溃前读取了 1700 万个字符。

代码在命中超过 760 万个字符后终止,ArrayList堆栈跟踪表明ArrayList.add()调用是原因(在触发内部数组扩展后失败)。

使用上面编辑过的代码,调用AbstractStringBuilder.expandCapacity()是杀死程序的原因。

是否有一种内存消耗较少的方法来实现动态数组,或者我可以使用一些完全不同的方法从解压缩的流中获取字符串?任何建议将不胜感激!