问题标签 [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 投票
1 回答
503 浏览

java - GZIPInputStream 适用于 FileInputStream 但不适用于 InputStream

我注意到在使用 GZIPInputStream 时,在 gzipped 文件上使用从 Class.class.getResourceAsStream 生成的 InputStream 会导致

在 GZIPInputStream 中使用时,但在同一个文件上使用 FileInputStream 似乎工作正常。有谁知道是什么原因造成的?

例如:

使用解压缩的文件数据成功生成输出字符串,同时:

生成上面的 ZipException。

当我解压缩文件时,我能够在生成的 InputStream 上使用 IOUtils.toString 获得正确的 outputString,因此我知道该文件已成功访问,并且问题似乎与 GZIPInputStream 本身有关。

0 投票
0 回答
617 浏览

java - 在linux中解压gzip文件时出错

我正在创建一个独立的 java 应用程序,它将 tar.gz 解压缩为 .tar 文件。

下面的代码在 Eclipse 中运行时工作正常,但是当我创建一个可运行的 jar 并使其在 Linux 服务器中运行时,它会抛出以下错误。

该错误实际上是从代码片段的第 5 行抛出的。有人可以帮我找出真正的问题吗?任何帮助将非常感激。

0 投票
1 回答
230 浏览

java - 在 Java 中连接重置后恢复流式传输 GZIP 文件

假设我的应用程序需要通过网络传输 100 GB+ GZIP 压缩文件。我假设由于连接问题,这些文件可能经常无法在一次尝试中流式传输。因此,我正在寻找能够从失败点恢复流的方法。我知道开箱即用的 GZIP 不允许从文件中间流式传输。但我认为它具有可以序列化的状态。然后拥有该状态,应该可以将 GZIP 阅读器恢复到故障前的状态并继续从故障点进行流式传输。

我将不胜感激有关如何实现这一目标的任何经验/想法。我查看了 GZIPInputStream 并最终面对 Inflater 类中的本机方法并阅读 RFC。

0 投票
1 回答
459 浏览

java - Spring集成Unzip转换器抛出ReplyRequiredException异常

我们想使用Spring Integration解压缩字节数组,并且在使用 unzip-transformer 时遇到以下异常:

org.springframework.integration.handler.ReplyRequiredException: 处理程序 'org.springframework.integration.handler.MessageHandlerChain#1$child#1' 没有产生回复,并且它的 'requiresReply' 属性设置为 true.,failedMessage=GenericMessage [有效载荷=字节[327] ...

这是我们尝试使用的.xml blob:

使用 service-activator 的等效 java 代码适用于解压缩:

有没有办法使用 unzip-transformer 执行相同的代码?

0 投票
2 回答
779 浏览

java - 包裹体订阅者在 GZIPInputStream 中导致挂起

我正在使用新java.net.http类来处理异步 HTTP 请求+响应交换,并且我正在尝试找到一种方法让 BodySubscriber 处理不同的编码类型,例如 gzip。

但是,映射 aBodySubsriber<InputStream>以便底层流被 a 包装GZIPInputStream(当在响应标头中找到“Content-Encoding: gzip”时)会导致挂起。没有例外,只是完全停止活动。

映射的代码BodySubscriber如下所示:

接收具有“gzip”编码的 HTTP 响应会导致控制台显示以下内容:

进入 EncodedBodyHandler.apply 方法。
进入 decodeGzipStream 方法。

什么都没有看到,所以调用GZIPInputStream构造函数之后的行永远不会执行。

有谁知道为什么这种将 a 包裹在InputStreamaBodySubscriber<InputStream>中的尝试GZIPInputStream挂起?

注意:未编码(原始文本)HTTP 响应主体的等效方法只包含一个BodySubscribers.ofInputStream()没有映射的调用,这允许接收和显示响应而不会出现问题。

0 投票
1 回答
2561 浏览

java - 当我使用 GZIPInputStream 读取 gz 文件时,它可以工作但抛出 EOFException

GZIPInputStream用来读取 gz 压缩文件,它可以工作但抛出EOFException,我该如何解决它,谢谢。

例外:

0 投票
0 回答
38 浏览

sql - 使用 SQL 解压缩 Gzip 数据

我们有一项将压缩数据存储在数据存储(SQL 表)中的服务。此数据使用 java util library GZIPOutputStream压缩。

我的问题是有没有办法使用 SQL 解压缩这些数据?

样本压缩数据:

"H4sIAAAAAAAAAO2QX2vCMBTFv0ueW9FNXeeb2jgCmoqtDBEpsb2FwExckgpO+t0XYytOGIw9S55y7p/fOXd9QjkzbCjyUGblDoTRC/gsuYJ8IhUWhhsOGg3WJ3SQ2v2PIRjGP6x4o5HcjvKCgzrLUGtogNjuS7SY3Le2peYCtG6xfg+Czkvhb4Og53fhteMH/XbmP2fd/lMWQJcVbeTVO5LjHuyWUT181WNZquxcicIYVZX3a4op18bZZ8Yovi0NXJUDKOs4Y4ZLMWyqlO0ccBkTiuM4nZIxpmOc0uVshBeWr4BpKexxasKZZgdmJLYTbymhkwhVG2vo3oljNupUWq50x2qkuZKyaPI2+PkiiiaWar1qa7MuU/x+vcTNph9C3YppQpJVSkJUeff0usUx0mQ1x+loGGPX+aeU3iPPI88jz7/zbC7vGxsilliEBQAA"

0 投票
2 回答
427 浏览

c# - C# MemoryStream & GZipInputStream: Can't .Read more than 256 bytes

我在使用 SharpZipLib 的 GZipInputStream 编写未压缩的 GZIP 流时遇到问题。我似乎只能获得 256 字节的数据,其余的没有被写入并保持为零。已检查压缩流 (compressedSection) 并且所有数据都在那里(1500+ 字节)。解压过程片段如下:

所以在这个片段中:

1)压缩段传入,准备解压。

2) 未压缩输出的预期大小(以 2 字节 little-endian 值存储在文件的标头中)通过一种方法将其转换为整数。由于它不是压缩的 GZIP 文件的一部分,因此该标头已被较早地删除。

3) SharpLibZip 的 GZIP 流是用压缩文件流 (msi) 和一个等于 int uncompressedIntSize 的缓冲区声明的(也用静态值 4096 进行了测试)。

4)我设置了一个 MemoryStream 来处理将输出写入文件,因为 GZipInputStream 没有读/写;它将预期的解压缩文件大小作为参数(容量)。

5)流的读/写需要byte[]数组作为第一个参数,所以我设置了一个byte[]数组,有足够的空间来获取解压输出的所有字节(本例中为3584字节,派生自uncompressedIntSize )。

6) int GzipInputStream decompressStream 使用 .Read 缓冲区作为第一个参数,从偏移量 0 开始,使用 uncompressedIntSize 作为计数。检查这里的参数,缓冲区数组仍然有 3584 字节的容量,但只获得了 256 字节的数据。其余为零。

看起来 .Read 的输出被限制为 256 字节,但我不确定在哪里。Streams 是否有我遗漏的东西,或者这是 .Read 的限制?

0 投票
2 回答
333 浏览

java - 尝试处理 s3 文件时出现 OOM

我正在尝试使用下面的代码从文件中下载和读取数据,无论如何都会OOM,正是在读取文件时,s3文件的大小为22MB,我通过浏览器下载它是650 MB,但是当我通过视觉监控时VM,解压缩和读取时消耗的内存超过2GB。请任何人指导,以便我找到内存使用率高的原因。谢谢。

线程“主”java.lang.OutOfMemoryError 中的异常:java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124) 处 java.util.Arrays.copyOf(Arrays.java:3332) 处的 Java 堆空间。在 java.io.BufferedReader.readLine(BufferedReader.java:370) 在 java.io.BufferedReader.readLine(BufferedReader) 的 java.lang.StringBuffer.append(StringBuffer.java:367) 的 AbstractStringBuilder.append(AbstractStringBuilder.java:596) .java:389) 在 com.kpmg.rrf.utils.AWSUtils.unzip(AWSUtils.java:917)

监控

0 投票
0 回答
424 浏览

amazon-s3 - 使用 Java 应用程序将 Gzip 文件上传到 S3 存储桶时已损坏

我正在使用 java 应用程序将 gzip 文件上传到 S3 存储桶,其数据将在 Athena 中使用。上传时 gzip 文件损坏。由于 Athena 无法查看 gzip 文件中的数据,因此在下载文件并手动尝试解压缩时,它会显示“它不是 gzip 文件”。