问题标签 [deflatestream]

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

c# - MSDN C# DeflateStream 示例代码问题

任何想法为什么在下面的示例中,我们需要添加 100 (buffer.Length + 100)?buffer.Length 应该和解压后的缓冲区长度一样,所以不需要再增加100。:-)

http://msdn.microsoft.com/en-us/library/bc2dbwea.aspx

提前谢谢,乔治

0 投票
3 回答
1625 浏览

.net - 使用 DeflateStream 时可以使用更少的内存吗?

我的应用程序需要解压缩包含大量 Deflate 压缩块(以及其他类型的压缩和加密)的文件。内存分析显示,deflate 流构造函数负责在其生命周期内分配应用程序的大部分内存(54.19%,其次是 DeflateStream.read,占 12.96%,其他所有内存都低于 2%)。

换个角度来看,每个文件块通常是 4KiB(解压后),而 DeflateStream 的构造函数分配的空间略大于 32KiB(大概是用于滑动窗口)。垃圾收集器有一个现场日,因为所有这些放气流几乎不会持续任何时间(每个都在下一个到来之前消失)!再见缓存效率。

我可以继续使用 DeflateStream,但我想知道是否有更好的选择。也许是一种重置流并再次使用它的方法?

0 投票
3 回答
5086 浏览

c# - 令人费解的 .Net C# DeflateStream 问题

我想知道是否有人可以阐明一个让我发疯的问题:

我正在写一个压缩解压测试类。为了测试它,我将数据集序列化为内存流,对其进行压缩、解压缩并比较结果。

压缩很好,但解压缩是它碰到污垢的地方。这是解压功能:

使用大小为 65536 的缓冲区,解压缩的流总是返回比未压缩的少一个字节。

现在,这将我带到了我正在与之抗争的第二个问题。对于某些缓冲区大小,uncompressStream.Read 即使仍有压缩数据要提取,也会返回 0。

对于这些情况,deflateStream.Read(s) 在 do{} 循环中只返回一次,然后返回一个等于 buffersize 的未压缩流,如果将 buffersize 增加一个字节,一切都很好(除了丢失的字节)。

缓冲区大小为 65536 的输出:(原始未压缩数据为 207833)

189544的缓冲区大小(代码坦克的一些神奇数字)

还要注意缓冲区大小 65536 的第三次读取,例如: bytesRead: [58472] 显然这也应该是 65536,因为缓冲区上还有数据吗?

任何想法将不胜感激。

蒂亚

  • 雅科
0 投票
1 回答
29782 浏览

c# - 使用 Deflate 压缩和解压缩字符串

我需要压缩和解压缩字符串

这是代码:

UnZipStr 方法似乎有错误。有人可以帮助我吗?

0 投票
1 回答
1067 浏览

.net - 使用 deflatestream 在 .NET (Vb) 中使用压缩数据执行 HTTP Post

我从 VB.Net 客户端发布的数据很大,我想压缩。我想做一个“POST”并且 apache 服务器支持 mod_deflate。我正在尝试将 DeflateStream 集成到我的邮政编码中,但似乎不起作用。

我可以使用标准代码在不压缩的情况下发送数据。

但是我不确定如何使用 Deflate Stream 添加压缩。我最好的猜测是以下,但我认为它不起作用。

问题。

  1. 我是否应该发送压缩流的 ContentLength,如果是,我该如何获得。
  2. 我应该写入数据流还是压缩?
  3. 这就是你如何一起使用 DataStream 和 DeflateSram 的吗?
  4. 在服务器端,考虑到 apache 应该自动处理膨胀,我怎么知道它正在工作(到目前为止,我知道在上面使用的两种方法之间我的帖子没有节省时间)。
0 投票
2 回答
1289 浏览

mono - 单声道和放气流

我有一个简单的代码

从 ds2 读取时,我有以下内容:

堆栈跟踪:

在(包装器托管到本机)System.IO.Compression.DeflateStream.ReadZStream(intptr,intptr,int)<0x00004>

在(包装器托管到本机)System.IO.Compression.DeflateStream.ReadZStream(intptr,intptr,int)<0x00004>

在 C:\cygwin\tmp\monobuild\build\BUILD\mono-2.6.3\mcs\class\System\System 中的 System.IO.Compression.DeflateStream.ReadInternal (byte[],int,int) [0x00031]。 IO.Compression\DeflateStream.cs:192

在 C:\cygwin\tmp\monobuild\build\BUILD\mono-2.6.3\mcs\class\System\System 中的 System.IO.Compression.DeflateStream.Read (byte[],int,int) [0x00086]。 IO.Compression\DeflateStream.cs:214

在 C:\Users\ilukyanov\Desktop\Cassini\GZipDemo\Main.cs:27 中的 testtesttest.MainClass.Main (string[]) [0x00041]

在(包装器运行时调用).runtime_invoke_void_object(对象,intptr,intptr,intptr)

此应用程序已请求运行时以不寻常的方式终止它。请联系应用程序的支持团队以获取更多信息。

这个问题出现在 Mono 2.6.1 & 2.6.3...

有没有已知的方法可以在 Mono 中成功读取 DeflateStream?或者也许有一些具有相同功能的第三方开源程序集?

0 投票
2 回答
473 浏览

asp.net-mvc-2 - 如何同时压缩和缩小内容?

我知道我们可以通过将 Response.Filter 声明为 GZip 或 Delfalte 流来压缩响应,但是我如何同时执行压缩和缩小呢?声明继承 Stream 的新类,然后首先对内容执行缩小,然后根据支持的 User-Agent 通过 GZip 或 Deflate 压缩它?

0 投票
0 回答
828 浏览

.net - .NET Deflate 流错误/错误

有没有人在使用 .NET Deflate Stream 时遇到以下错误?

解压缩从磁盘读取的 deflate 流时会发生此错误。我正在使用简单的索引文件,其中包含许多小的 deflate 编码块。这是一个非常罕见的错误,因为几十万(或百万)中只有一个压缩项目会遇到此错误。

似乎 HuffmanTree.CreateTable 方法异常和例程试图填充超出其限制的数组。

我尝试分配一个两倍于原始大小的数组进行解压,但它仍然会引发错误。

解码后的数据似乎完好无损,但是,例程不断尝试解码并溢出缓冲区。

我想我可以尝试/捕获并检测是否发生此错误,然后尝试处理它。

对问题的任何见解将不胜感激。

(I have tried DotNetZip which is causing different issues in the 64 bit environment I am working in.)

0 投票
5 回答
4999 浏览

c# - GZipStream 和 DeflateStream 产生更大的文件

我正在尝试在 C# 中使用 deflate/gzip 流,但压缩后的文件似乎比以前大。

例如,我压缩了一个 900ko 的 docx 文件,但它产生了一个 1.4Mo 的文件!

它对我尝试的每个文件都执行此操作。

可能是我这样做的方式错了吗?这是我的代码:

0 投票
1 回答
9248 浏览

c# - DeflateStream 不解压数据(第一次)

所以这里有一个奇怪的。我有这种方法来获取 Base64 编码的压缩字符串并返回原始数据:

这将返回一个空字符串,除非我添加第二次调用ds.CopyTo(inflate). (WTF?)

( Flush// on没有效果。Close)Disposeds

为什么DeflateStream在第一次调用时复制 0 个字节?我也试过用 循环Read(),但它在第一次调用时也返回零,然后在第二次调用。


更新:这是我用来压缩数据的方法。