【发布时间】:2011-09-21 16:06:38
【问题描述】:
我不熟悉 DeflateStream 的内部结构,但我需要将文件存储在供应商的数据库系统中,该系统在二进制附件上使用 DeflateStream。我注意到的第一件事是我的所有文件在压缩后都大了 10-50%,但我将其归因于已经高度压缩的文件(在这种情况下它们都是 PDF)之上的不太复杂的压缩算法。然而,我的问题涉及这样一个事实,即当我刚刚将原始文件写入 BLOB 时,供应商的应用程序打开它没有问题(它也打开了我用 deflate 压缩的附件)。压缩数据上是否有一个标头告诉 DeflateStream 数据未压缩并且基本上按原样传递? This 是规范;任何熟悉它的人都可以指出这是在哪里定义的 - 还是我不在基地并且供应商在幕后做了一些魔术?
【问题讨论】:
-
抱歉有任何混淆,但答案集中在我冗长帖子的错误部分。基本问题“放气流算法是否检测到数据未压缩并按原样传递?”。似乎大多数答案都说“不”,但从规范来看:(1)从输入流中读取块头。 (2) 如果未压缩存储,则跳过当前部分处理的字节中的任何剩余位 (3) 复制 LEN 字节的数据到输出。所以我认为答案是肯定的
-
并进一步澄清这是在 Decompress 操作
-
我的回答还是正确的。 DeflateStream 类中没有什么魔法可以在尝试解压缩未压缩数据时优雅地不执行任何操作。
标签: c# rfc deflatestream