当前位置:  开发笔记 > 编程语言 > 正文

如何用zlib.NET来扩充文件?

如何解决《如何用zlib.NET来扩充文件?》经验,为你挑选了2个好方法。

我正在使用zlib.NET库来尝试和扩充由zlib压缩的文件(也许在Linux机器上).这是我正在做的事情:

zlib.ZInputStream zinput =
    new zlib.ZInputStream(File.Open(path, FileMode.Open, FileAccess.Read));

while (stopByte != (data = zinput.ReadByte()))
{
  // check data here
}

zinput.Close();

数据字节与压缩数据字节匹配,因此我必须做错事.



1> Jon Skeet..:

除了在面对异常时未使用"using"语句来关闭流,除了我看起来没问题.数据肯定是压缩的吗?你能在Linux机器上用zlib解压缩吗?

查看了源代码后,它非常可怕 - 例如,调用int Read(buffer, offset, length)最终将调用其内部int Read()方法length时间.鉴于这种不稳定的开始,我不确定我是否会特别信任这些代码,但我预计它至少会有点起作用!你尝试过使用SharpZipLib吗?



2> Ben Collins..:

看来我错误地假设所有虚拟方法都被覆盖了,事实并非如此.我使用的是zlib.ZInputStream.ReadByte(),它只是继承的Stream.ReadByte(),它不会进行任何膨胀.

我使用zlib.ZInputStream.Read()代替它,它的工作方式应该如此.


这听起来像是一个糟糕的Stream实现,因为基础ReadByte()将调用Read()来读取一个字节.
刚刚遇到同样的问题.对zlib.NET印象不深!为什么`ZInputStream`不会覆盖`Stream`?相反,它会覆盖`BinaryReader`,并且不完整!我不喜欢这里的所有解决方案似乎都建议将泄漏的流复制到内存中.我会按你的建议尝试Ionic.ZLib.谢谢.
推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有