问题标签 [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 回答
1051 浏览

java - 如何在不转到 Java 文件系统的情况下 gzip 然后解压缩字符串?

期望:
创建压缩和解压缩字符串或字节数组。之后,我计划对它进行 Base64 编码以写入日志文件。

不幸的是,它似乎没有将其识别为被压缩或其他东西。我假设它缺少一些元数据字节,但找不到我需要的东西。

输出: 在此处输入图像描述

测试类:

0 投票
2 回答
543 浏览

java - Java GzipInputStream 转换为 DataInputStream

我对 Java 中的 GZip 有疑问。目前我使用 gzip 压缩的文件。一个 gzip 存档中的一个文件。如果我手动解压缩它们然后解析它们一切正常。但我想用 Java 和 GZipInputStream 自动化它,但它不起作用。最后我需要有 DataInputStream 。我的代码是:

我也试过 new GZIPInputStream(new FileInputStream(baseFile)); 结果是一样的。由于输出,我看到 Gzip 流毫无例外地创建,但后来我从 DataInputStream 获得无效数据。请帮忙 :)

0 投票
3 回答
33 浏览

java - 从 GZipped 文件中读取对象时出现 ClassNotFoundException

*.gz 文件是在我正在使用的包的先前版本下创建的(它具有类 tratz.semantics.ClassificationBundle)。在当前版本中,该类被命名为 miacp.semantics.ClassificationBundle。两者的成员相同。有什么方法可以让早期版本在后期版本中可读吗?基本的读取功能是

我有早期版本,所以我可以读取那个版本的文件。但是,我将如何创建一个可以在新版本中读取的新文件?

0 投票
1 回答
1268 浏览

java - java GZIPInputStream 和 GZIPOutputStream 没有按预期工作

我正在尝试将一系列Long's 写入 a GZIPOutputStream,希望稍后解压缩这些数字。
当我尝试使用少量 ' 时,以下程序可以正常工作,但它会抛出许多' 的Long异常,例如 (10240)。Long

请查看并运行此代码:

输出:

0 投票
1 回答
218 浏览

java - 在 GZIP 解压过程中设置 ProgressBar maxValue 和 publishProgress 值

我有一个 AsyncTask 正在执行解压缩 GZIP 文件的工作。我刚刚了解到我可以发布 AsyncTasks 的进度,并且已经成功地设法让它与我之前创建的其他 AsyncTasks 一起工作。我知道为了做到这一点,需要 2 个重要值,最大值和当前进度值。

我遇到的问题是我不确定如何从输入流中检索这些值。我当前的 AsyncTask 如下所示:

我在我的代码中评论了我认为我需要找到值的地方,但在这里需要一些帮助。任何帮助表示赞赏。

0 投票
1 回答
1210 浏览

java - 解压 HTTPInputStream 时 GZIPInputStream 过早关闭

问题

请参阅下面编辑部分中的更新问题

我正在尝试使用 GZIPInputStream 即时从 Amazon S3 解压缩大型(~300M)GZIPed 文件,但它只输出文件的一部分;但是,如果我在解压缩之前下载到文件系统,则 GZIPInputStream 将解压缩整个文件。

如何让 GZIPInputStream 解压缩整个 HTTPInputStream 而不仅仅是它的第一部分?

我试过的

请参阅下面编辑部分中的更新

我怀疑一个 HTTP 问题,除了没有抛出异常,GZIPInputStream 每次都返回一个相当一致的文件块,据我所知,它总是在 WET 记录边界上中断,尽管它选择的边界是不同的URL(这很奇怪,因为所有内容都被视为二进制流,根本没有解析文件中的 WET 记录。)

我能找到的最接近的问题是 从 s3 读取时 GZIPInputStream 过早关闭该问题的答案是,某些 GZIP 文件实际上是多个附加的 GZIP 文件,而 GZIPInputStream 不能很好地处理。但是,如果是这种情况,为什么 GZIPInputStream 可以在文件的本地副本上正常工作?

演示代码和输出

下面是一段示例代码,演示了我看到的问题。我已经在两个不同网络上的两台不同 Linux 计算机上使用 Java 1.8.0_72 和 1.8.0_112 对其进行了测试,结果相似。我希望解压后的 HTTPInputStream 的字节数与解压后的本地文件副本的字节数相同,但解压后的 HTTPInputStream 小得多。

输出 示例代码

编辑

根据@VGR 的评论,演示代码中的已关闭流和相关通道。

更新

问题似乎确实是文件特有的。我在本地提取了 Common Crawl WET 存档(wget),解压缩它(gunzip 1.8),然后重新压缩它(gzip 1.8)并重新上传到 S3,然后即时解压缩工作正常。如果您修改上面的示例代码以包含以下行,您可以看到测试:

URL rezippeds3 指向我下载、解压缩和重新压缩,然后重新上传到 S3 的 WET 存档文件。您将看到以下输出:

正如您所看到的,一旦文件被重新压缩,我就能够通过 GZIPInputStream 流式传输它并获取整个文件。原始文件仍然显示解压缩的通常提前结束。当我下载并上传 WET 文件而不重新压缩它时,我得到了同样不完整的流媒体行为,所以它肯定是修复它的重新压缩。我还将原始文件和重新压缩后的两个文件都放到了传统的 Apache Web 服务器上,并且能够复制结果,因此 S3 似乎与该问题无关。

所以。我有一个新问题。

新问题

为什么读取相同内容时 FileInputStream 的行为与 HTTPInputStream 不同。如果它是完全相同的文件,为什么:

新 GZIPInputStream(urlConnection.getInputStream());

行为不同于

新 GZIPInputStream(new FileInputStream("./test.wet.gz"));

?? 输入流不只是输入流吗?

0 投票
3 回答
1255 浏览

java - 从 GZIPInputStream 读取大量字节

我正在通过 GZIPInputStream 读取压缩文件。我想一次读取大量数据,但是无论我要求 GZIPInputStream 读取多少字节,它总是读取的字节数要少得多。例如,

读取的字节总是在 1800 字节左右,而它应该几乎等于 bArray 的大小,在本例中为 81920。为什么会这样?有没有办法解决这个问题,并且真的可以读取更多的字节数?

0 投票
2 回答
3447 浏览

java - GZIPInputStream 无法在接收端解码(无效的代码长度设置)

我正在尝试使用 GZIPOutputStream 在客户端中对字符串进行编码,然后使用 GZIPOutputStream 在服务器中解码该字符串。

客户端代码(初始套接字连接建立后)为:

以及服务器端代码(同样,在建立连接之后):

我检查并正确传递了缓冲区长度(即编码消息的大小),因此传输了正确的字节数。但是,我得到了这个:

有任何想法吗?

提前感谢您的任何帮助!

0 投票
1 回答
805 浏览

android - 在android上通过短信发送压缩图像文件

我想知道是否可以将图像转换为 base64 字符串,然后使用 GZIP 对其进行压缩并通过 SMS 将其发送到另一部 android 手机,在该手机中对其进行解压缩、解码,然后将图像显示给用户?如果是,那么可能的解决方案是什么?

0 投票
2 回答
593 浏览

java - 解压 Gzip 文件并存储在变量中

我已经搜索了很多从字节到字符串的转换,但我的查询有点不同,请提前阅读。

目前我有一个 gzip 文件,我可以使用http://www.mkyong.com/java/how-to-decompress-file-from-gzip-file/中的代码对其进行解压缩。此代码帮助我将解压缩的输出存储在文件中,但如何将其存储在变量中?我目前正在使用此代码:

由于我bytes_read在长度不是 1024 时将字节转换为字符串,所以我最终在我的 StringBuffer 中得到了一些奇怪的数据,但是在文件中没有这样的数据,因为fileOutputStream.write(buffer, 0, bytes_read);它限制它写入更新的部分。我该如何解决?

提前致谢。