嘿,我在使用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();
答案 0 :(得分:1)
看起来你反过来了。
如果您尝试压缩流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();
}