问题标签 [gzipstream]

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 回答
653 浏览

sqlite - 我可以更好地单独或完全压缩多个 SQLite3 DB 吗?

我正在使用 C# 编写一个程序,该程序一次处理多个数据库文件,以创建一种用户可以稍后选择压缩和存档的缓存。我正在为这些数据库使用 SQLite3。但是,当谈到压缩时,我注意到对于 SQLite 连接字符串,有一个可选的压缩参数可以启用。另一种选择是通过 GZip 流运行所有数据库文件。最后一个选择是两者都做。

我想知道的是,平均而言,压缩后哪个选项会导致最小的磁盘使用量?我认为 SQLite 可能比我更了解如何压缩它自己的数据库文件,但是它是在每个文件的基础上工作的。GZip 可以利用跨文件的数据来更好地压缩文件,但是如果 SQLite 数据库已经被压缩,它可能会减少 GZip 流可以用来产生较小输出的跨文件数据。

0 投票
1 回答
2291 浏览

ruby - Zlib 解压缩引发头错误 - Ruby

我需要从流 api 解压缩块数据的帮助。我正在连接到使用 gzip 压缩返回 json 输出的 Gnip 流 api。当我尝试解压缩输出数据时,它会抛出以下错误“Zlib::DataError:不正确的标头检查”。

它可能非常接近这个问题 - http://groups.google.com/group/nodejs/browse_thread/thread/32b9ee7f691a68d9

在这里,我附上了我的代码片段供您参考:

上面的代码总是返回“Zlib::DataError:不正确的标头检查”。我知道 gnip 会逐块返回数据块,因此所需的 gzip 输出不会在第一个块中。那么如何收集所有需要的 gzip 输出块并解压缩它们以获得所需的单个 json 输出。

提前致谢。维拉。

0 投票
1 回答
898 浏览

c# - 为什么当 Content-Encoding 为空时,HttpWebResponse 会尝试使用 GZip 解压流?

我已经查看了很多关于这个主题的问答,并且到了我使用以下代码从给定 URI 获取字节的地步:

现在,对于某个 URI(指向一个文件),在调试时,我看到 Web 响应的“Content-Encoding”标头等于空(“”),但是当尝试从流中读取时,它抛出异常:

System.IO.InvalidDataException:GZip 标头中的幻数不正确。确保您传入的是 GZip 流。

在开发工具中调试相同的 URI 时,我在响应标头上得到了这个:

内容编码:gzip、deflate

所以我真的不知道会发生什么。

关于如何避免此异常并成功读取文件字节的任何线索和想法?

谢谢!

0 投票
2 回答
1357 浏览

c# - 在 C# 中解压缩数据

我是 C# 的新手,我正在编写一个简单的 Web 服务。它获取 zip 文件并在文件系统中解压缩。在 C# 中的代码是:

并从 java 代码发送 zip 数据:

在 C# 代码中,从 StreamReader 读取数据时出现异常

我做错了什么?

0 投票
1 回答
192 浏览

c# - C# .NET GZipStream 返回不一致的文件长度

我注意到每次我通过GZipStream文件大小运行相同的文件时都会有所不同。当我通过 Windows 资源管理器查看文件时,它size是不同的,但Size on disk始终是相同的。这是预期的行为。

0 投票
1 回答
5444 浏览

compression - GZipStream 没有检测到损坏的数据(甚至 CRC32 通过)?

我正在使用 GZipStream 压缩/解压缩数据。我之所以选择它而不是 DeflateStream,是因为文档指出 GZipStream 还添加了一个 CRC 来检测损坏的数据,这是我想要的另一个功能。我的“肯定”单元测试运行良好,因为我可以压缩一些数据,保存压缩的字节数组,然后再次成功解压缩。.NET GZipStream 压缩和解压缩问题帖子帮助我意识到我需要在访问压缩或解压缩数据之前关闭 GZipStream。

接下来,我继续编写“否定”单元测试,以确保可以检测到损坏的数据。我以前使用MSDN 中的 GZipStream 类的示例来压缩文件,用文本编辑器打开压缩文件,更改一个字节以破坏它(好像用文本编辑器打开它还不够糟糕!),保存它然后解压缩它以确保我得到了预期的 InvalidDataException。

当我编写单元测试时,我选择了一个要损坏的任意字节(例如,compressedDataBytes[50] = 0x99)并得到一个 InvalidDataException。到目前为止,一切都很好。我很好奇,所以我选择了另一个字节,但令我惊讶的是我没有得到异常。这可能没问题(例如,我碰巧碰到了数据块中未使用的字节),只要数据仍然可以成功恢复。但是,我也没有得到正确的数据!

为了确定“不是我”,我从.NET GZipStream 压缩和解压缩问题的底部提取了清理后的代码,并将其修改为顺序损坏压缩数据的每个字节,直到它无法正确解压缩。以下是更改(请注意,我使用的是 Visual Studio 2010 测试框架):

当我运行这个测试时,我得到:

因此,这意味着实际上有 7 次损坏数据没有任何区别(字符串已成功恢复),但损坏字节 11 既没有抛出异常,也没有恢复数据。

我错过了什么或做错了什么?谁能看到为什么没有检测到损坏的压缩数据?

0 投票
1 回答
3122 浏览

c# - C# 网络流压缩 - Sharpziplib、DotNetZip、gzipstream 都在我的流上给出错误

我有一对使用网络流进行通信的 C# 客户端-服务器程序。一切正常,因为它没有压缩。现在我想降低带宽使用率,所以我想在我的网络流周围使用压缩包装流。

我已经尝试过 SharpZipLib、DotNetZip、C# 自己的 GZipStream——但我无法让它们中的任何一个工作。

SharpZipLib 有刷新问题,并应用此处指定的修复:http: //community.sharpdevelop.net/forums/p/7855/22139.aspx导致异常“标题校验和非法”。

使用 DotNetZip 的 DeflateStream 会导致 ZLibException("Bad state (invalid stored block lengths)");

GZipStream 给了我一个 System.IO.InvalidDataException 说明“GZip 标头中的幻数不正确。确保您传递的是 GZip 流。”。

我实现它的方式是,每当我的框架必须发送一个字节数组时,我都会在现有网络流周围创建一个新的压缩流包装器,将字节写入压缩流,然后刷新、关闭和处置它. 这是为了确保每个 WriteMessage(byte[] blah) 都使用它自己的独立于状态的压缩流,该压缩流将立即被刷新。我已经注意不要让任何流关闭原始网络流。

基本上,我的 DecompressionStream 创建如下(可选注释掉)

并开始

然后在 ReceiveCallback 中,读取数据,刷新、关闭和处理流:

并通过再次调用 CreateInputStreamWrapper 立即创建一个新的 inputStream。

发生什么了 ?由于所有压缩流实现都失败,错误归结为“数据流中有错误”,我有一种预感,一定是我和我的代码。另一方面,如果我删除压缩并只使用网络流就没有问题,这让我认为问题一定出在压缩代码上。

这听起来很熟悉吗?当我们在做的时候,有没有人知道任何(其他)适合环绕网络流的压缩流实现?

0 投票
2 回答
649 浏览

c# - GZipStream 到 gzip 字符串

我正在使用 GZipStream 来 gzip 字符串。有人可以告诉我是否可以控制压缩级别?这是因为我意识到可以创建比 .net 似乎创建的更压缩的 gzip 流。

0 投票
5 回答
2113 浏览

c# - GZipStream 机器依赖

我在 .NET 4.0 中遇到了一些奇怪的机器/操作系统相关的 GZipStream 行为。这是相关代码:

运行 Compress("freek") 给了我

在 Windows 7 和

在 Windows Server 2008R2 上。两者都是64位。我希望结果是一样的。

当我解压缩任一结果时,两台机器都会给出正确的结果。我已经发现在 W7 ms.Length == 25 而在 W2K8R2 ms.Length==128 上,但不知道为什么。

这是怎么回事?

0 投票
0 回答
324 浏览

java-me - j2me中的Ksoap异常

我正在创建一个调用 .NET WCF Web 服务的 J2ME 应用程序,并且我使用了 ksoap。
我正在使用 netbeans IDE。
但是当我运行该应用程序时,运行时异常是

该异常的原因是什么?

这里编译时没有任何错误。