问题标签 [gzipoutputstream]

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 投票
2 回答
4286 浏览

java - GZIPOutputStream 未正确压缩 HTTP 响应的字符串

我正在编写一个简单的 Java http 服务器来响应 JSON 数据。我正在尝试在发送数据之前对数据进行 GZip,但它通常会发回 gzip 后的数据,从而在浏览器中产生错误。例如,在 Firefox 中它说:

内容编码错误 您尝试查看的页面无法显示,因为它使用了无效或不受支持的压缩形式。

有时,如果我正在压缩的字符串很小而没有某些字符,它会起作用,但是当有括号等时它似乎会混乱。特别是,我下面的示例文本失败了。

这是某种字符编码问题吗?我已经尝试了各种各样的东西,但它就是不想轻易工作。

0 投票
2 回答
21866 浏览

java - 字符串到 GZIPOutputStream

我已经尝试搜索,但找不到任何东西。我正在尝试做的是循环遍历一个列表,在该列表中我从多个列表中的项目组合构造一个字符串。然后我想将这些字符串转储到一个 gzip 文件中。我只是将它转储到一个普通的 ascii 文本文件中,但我似乎无法让它与 gzipoutputstream 一起工作。所以基本上,

循环创建字符串转储字符串到压缩文件 endloop

如果可能的话,我想避免转储到纯文本文件然后压缩它,因为这些文件每个几乎 100 兆。

0 投票
3 回答
15583 浏览

java - GZIP解压字符串和字节转换

我的代码有问题:

此代码抛出 java.io.IOException: unknown format (magic number ef1f)

事实证明,在转换字节时new String (b1)byte b [] = str.getBytes ()字节被“宠坏了”。在该行的输出处,我们已经有了更多字节。如果您避免转换为字符串并使用字节进行操作 - 一切正常。对不起我的英语不好。


我正在使用此功能解压缩服务器响应。感谢帮助。

0 投票
3 回答
525 浏览

java - 从 GZIPOutputStream 计算压缩文件大小

我正在压缩文件并将其写入输出流,如何获取压缩文件大小以放入响应标头

0 投票
2 回答
1271 浏览

java - GZIPOutputStream 在单独的线程中进行压缩

是否有 GZIPOutputStream 的实现可以在单独的线程中完成繁重的工作(压缩+写入磁盘)?

我们不断写入大量 GZIP 压缩数据。我正在寻找一个可以代替 GZIPOutputStream 的替代品。

0 投票
1 回答
500 浏览

java - Java- 使用 Deflater 或 GZIPOutputStream 连接压缩数据

我们有一堆线程来获取数据块,压缩这些数据,然后最终将它们连接成一个大字节数组。如果有人可以扩展这个想法或推荐另一种方法,那就太棒了。我目前有两种方法正在尝试,但都没有按照他们应该的方式工作:


第一个:我让每个线程的run()函数获取输入数据并GZIPOutputStream用于压缩它并将其写入缓冲区。

这种方法的问题在于,因为每个线程都有一个数据块,当我调用时,它是一个较长的完整数据的一部分GZIPOutputStream,它会将那个小块视为要压缩的完整数据。这意味着它会粘在标题和预告片上(我也使用自定义字典,所以我不知道标题现在有多少位,也不知道如何找出)。

我认为你可以手动切断标题和预告片,你只会留下压缩数据(并留下第一个块的标题和最后一个块的预告片)。我不确定这种方法的另一件事是我是否可以做到这一点。如果我将标题留在第一个数据块上,它是否仍能正确解压缩。该标头是否仅包含数据的第一个块而不包含其他连接块的信息?


第二种方法是使用Deflater类。在这种情况下,我可以简单地设置输入,设置字典,然后调用deflate().

问题是,这不是 gzip 格式。那只是“原始”压缩数据。我不知道如何制作它以便 gzip 可以识别最终输出。

0 投票
1 回答
697 浏览

java - 如何读取 GZIP 对象输入,Java

我有一个我想通过套接字发送的对象。对于我得到的输出:

对于我得到的输入:

Msg 对象是可序列化的。

如果我运行这段代码,我会得到一个客户端连接,服务器也会发送数据,但客户端永远不会开始读取输入

有什么建议么?

感谢所有回复

0 投票
1 回答
2856 浏览

java - 如何压缩小字符串

可能重复:
短文本字符串的最佳压缩算法

我在压缩和解压缩字符串方面需要帮助。

当我尝试压缩较小的字符串时,它会转换为比原始大小更多的字节。但是当我添加更大的字符串时,它会以更少的字节压缩。

我在下面给出我的代码:

0 投票
1 回答
843 浏览

java - 即时 gzip 文件夹及其子文件夹

我有一个大文件夹,我想在保存子文件夹层次结构的同时发送它的压缩版本。

目前我正在通过创建一个大的 zip 文件并发送它来做到这一点。

我正在寻找一种将文件夹内容写入某些输出流的方法,该输出流将被重定向到套接字输出流。

我的动机是避免在运行时将大文件保存在我的机器中

我知道如何为单个文件执行此操作,但不知道如何处理具有许多子文件夹的文件夹并保存内部层次结构......

谢谢!

0 投票
1 回答
1969 浏览

java - 当我使用 GZIPOutputStream 将文件发布到 servlet 时文件损坏

我尝试在此处修改@BalusC 优秀教程以发送 gzip 压缩文件。这是一个有效的java类:

您必须编辑FILENAMEURL字段并在 URL 中设置一个 servlet - 它的doPost()方法是:

Now when isServerGzip field is set to true the FILENAME is compressed alright and send to the server but when I try to extract it it is corrupted (I use 7z on windows which opens the gzip file as archive but when I try to extract the file inside the gzip archive it says it is corrupted - though it does extract the (corrupted indeed) file). Tried with various files - the larger ones end up corrupted at some point the smaller ones extract as empty - the reported size of the larger files inside the archive is much larger than the real size while of the smaller ones 0. I marked the parts that need attention as // ***. I might miss some connection configuration or my way of gzipping the stream might be plain wrong or...?
Tried tweaking connection properties, the buffers, caches etc to no avail