当压缩文件达到 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();
看起来你反过来了。
如果您尝试压缩流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();
}