问题标签 [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.
c# - 压缩和解压缩字符串只产生原始字符串的第一个字母?
我正在使用以下代码使用 Gzip 压缩字符串:
并使用以下代码对其进行解压缩:
当我在此示例代码中使用这些函数时,结果只是字母S
:
如果我调试代码,我看到的decom
值为
但显示的值只是字母S
。
c# - 使用 GZipStream 解压只返回第一行
我一直在研究解析第 3 方 fms 日志的函数。日志在 Gzip 中,因此我使用了适用于我们使用的任何其他 Gzip 文件的解压缩功能。
解压这些文件时,我只得到压缩文件的第一行,也不例外,它只是没有找到其余的字节,就好像第一行有一个 EOF。我尝试使用 Ionic.Zlib 而不是 System.IO.Compression 但结果是一样的。这些文件似乎没有以任何方式损坏,使用 Winrar 解压缩它们。
如果有人知道如何解决这个问题,我将不胜感激。谢谢
您可以在此处下载示例文件:http: //www.adjustyourset.tv/fms_6F9E_20120621_0001.log.gz
这是我的解压功能:
c# - GZipStream 只解压第一行
我的 GZipStream 只会解压缩文件的第一行。通过 7-zip 提取内容按预期工作,并为我提供了整个文件内容。它还使用 cygwin 和 linux 上的 gunzip 按预期提取,所以我希望这是特定于 O/S 的(Windows 7)。
我不确定如何解决这个问题,所以任何关于这方面的提示都会对我有很大帮助。听起来与此非常相似,但使用 SharpZLib 会产生相同的结果。
这就是我正在做的事情:
c# - Gzipstream over tcp 不解压
我正在尝试使用protobuf-net
和
通过 tcp 连接发送序列化的压缩数据GzipStream
从 zipstream 中反序列化或读取只是阻塞并且没有完成。
为了测试它,我选择尝试使用更简单FileStream
的方法来查看数据实际上正在被压缩和写入,事实就是如此。然而,该行Console.writeLine(inPerson1.name)
抛出一个Object reference not set exception
,因为它似乎没有从 zipstream 中读取任何数据。
关于为什么或我做错了什么的任何想法?
代码:
c# - 为什么我的 C# gzip 生成的文件比 Fiddler 或 PHP 大?
如果我 GZip 这个文本:
你好世界
通过 C# 使用此代码:
结果流为 133 字节长
通过 FiddlerUtilities.GzipCompress
或这个 PHP 页面运行相同的字符串,结果只有 31 个字节长。
在这两种情况下,输入都是 11 个字节,所以我认为 PHP 结果是正确的,但显然这意味着我无法从 .NET 中解压缩 PHP zip,反之亦然。为什么 .NET 输出要大得多?
实际上事实证明,虽然 PHP 和 Fiddler 的结果长度相同,但它们并不相同。我可以在 .NET 中解压 PHP 版本,但不能解压 Fiddler 版本。PHP 页面解压缩了所有三个,因此看起来 Fiddler 和 .NET 的 gzip 实现之间可能存在不兼容。
根据要求,我已将三个输出上传到此处的保管箱。
这些是这些文件的原始十六进制转储(不确定它们是否真的有这样的用途,但我认为这表明提琴手和 PHP 版本之间的区别在于标头,而不是压缩数据本身):
提琴手:
PHP:
C#:
c# - 解压/压缩错误
解压时出现错误
“输入不是有效的 Base-64 字符串,因为它包含非 base 64 字符、两个以上的填充字符或填充字符中的非空白字符。”
它压缩得很好,但不解压缩。我查看了许多其他具有相同问题的示例,我觉得我正在遵循所说的内容,但在解压缩时仍然一无所获。以下是压缩和解压方法:
其中 s2 是类型 XElement 字符串 pH = DecompressData(stream2)); 其中stream2是字符串类型..在数据库中它存储在nvarchar类型列中,同时压缩删除根标签。
第一次 xml 就像 peet 3/24/2012 Percent 33.3 10 下一次将另一个学生数据添加到现有 xml 中,这里每次压缩时我们都必须删除父标签。
c# - .NET GZipStream 解压缩产生空流
我正在尝试序列化和压缩 WPF FlowDocument
,然后执行反向操作 - 解压缩字节数组并反序列化以重新创建 FlowDocument - 使用 .NETGZipStream
类。我正在遵循 MSDN 上描述的示例,并且我有以下测试程序:
但是,我在行出现异常,XamlReader.Load
这是正常的,因为调试输出告诉未压缩流的长度为零。
为什么最终uncompressed
流不包含原始的 123 个字节?
(请忽略“压缩”字节数组大于“未压缩”字节数组的事实——我通常会处理更大的流文档)
c# - 如何在没有第三方库的情况下序列化对象+压缩然后解压缩+反序列化?
我在内存中有一个大对象,我想将它作为 blob 保存到数据库中。我想在保存之前对其进行压缩,因为数据库服务器通常不是本地的。
这就是我目前所拥有的:
但是,当我使用 Total Commander 压缩相同的字节时,它总是将大小至少减少 50%。使用上面的代码,它将 58MB 压缩到 48MB,任何小于 15MB 的东西都会变得更大。
我应该使用第三方 zip 库还是在 .NET 3.5 中有更好的方法来做到这一点。我的问题还有其他选择吗?
编辑:
刚刚在上面的代码中发现了一个错误。安杰洛感谢您的修复。
GZipStream 压缩仍然不是很好。与 TC 48% 的压缩相比,gZipStream 的平均压缩率为 35%。
我不知道我从以前的版本中得到了什么样的字节:)
编辑2:
我发现了如何将压缩率从 20% 提高到 47%。我不得不使用两个内存流而不是一个!谁能解释为什么会这样?
这是一个带有 2 个内存流的代码,它的压缩效果更好!!!
c# - 将 gZipStream 与一个或两个内存流一起使用会产生很大的不同
我肯定遗漏了一些非常明显的东西,但谁能解释为什么在第二种情况下压缩率要好得多?!
案例 1:非常低的压缩率,有时甚至会增长。
案例 2:更好的压缩并且我没有得到尺寸增长。
我已经完成了镜像解压缩,在这两种情况下,我都可以将其反序列化为源对象而不会出现任何问题。
以下是一些统计数据:
UncSize: 58062085B, Comp1: 46828139B, 0.81%
UncSize: 58062085B, Comp2: 31326029B, 0.54%
UncSize: 7624735B, Comp1: 7743947B, 1.02%
UncSize: 7624735B, Comp2: 5337522B, 0.70%
UncSize: 1237628B, Comp1: 1265406B, 1.02%
UncSize:1237628B,Comp2:921695B,0.74%
c# - 执行 GZipStream 压缩时抛出 System.OutofMemoryException
我正在以胜利形式工作。执行以下操作时出错。System.OutOfMemoryException
当我尝试连续运行大约 2-3 次操作时,它会显示错误。似乎.NET 无法释放操作中使用的资源。我用于操作的文件很大,大约超过 500 MB。
我的示例代码如下。请帮助我如何解决错误。