当压缩文件达到 65536 字节时,Ionic.zlib 停止压缩?- C#

本文关键字:压缩 zlib Ionic 文件 65536 字节 | 更新日期: 2023-09-27 17:56:23

嘿,我在使用 Ionic.zlib 压缩文件时遇到问题,我对 C# 很陌生,所以这个问题可能很容易解决。 如果我压缩一个大文件,假设大小为 500kb,那么一旦压缩文件达到 65536 字节,它将停止,如果我然后解压缩文件,就会丢失很多数据:/。 我可以通过将缓冲区设置为 4,000,000 来解决此问题,但我听说最好将其设置为 0x4000。

        ZlibStream compressor = new ZlibStream(gsc_stream, CompressionMode.Compress, CompressionLevel.BestCompression, true);
        byte[] buffer = new byte[0x4000];
        Int32 n;
        int previous = Convert.ToInt32(zone.Position);
        while ((n = compressor.Read(buffer, 0, buffer.Length)) != 0)
        {
            zone.Write(buffer, 0, n);
        }
        zone.Flush();
        compressor.Flush();

当压缩文件达到 65536 字节时,Ionic.zlib 停止压缩?- C#

看起来你反过来了。
如果您尝试压缩流gsc_stream中的文件并将结果写入流zone则正确的代码将是:

using (ZlibStream compressor = new ZlibStream(zone, CompressionMode.Compress, CompressionLevel.BestCompression, true))
{
    byte[] buffer = new byte[0x4000];
    int n;
    while ((n = gsc_stream.Read(buffer, 0, buffer.Length)) != 0)
    {
        compressor.Write(buffer, 0, n);
    }
    zone.Flush();
    compressor.Flush();
}