using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Text; namespace Apewer.Internals { internal class GzipHelper { /// 对数据进行 GZip 压缩。 public static byte[] ToGzip(byte[] bytes) { if (bytes == null) return Constant.EmptyBytes; if (bytes.Length == 0) return Constant.EmptyBytes; byte[] result; var output = new MemoryStream(); var zip = new GZipStream(output, CompressionMode.Compress, true); zip.Write(bytes, 0, bytes.Length); zip.Close(); zip.Dispose(); result = output.ToArray(); output.Close(); output.Dispose(); return result; } /// 对数据进行 GZip 解压。 public static byte[] FromGzip(byte[] bytes) { if (bytes == null) return Constant.EmptyBytes; if (bytes.Length == 0) return Constant.EmptyBytes; byte[] result; var input = new MemoryStream(bytes); var output = new MemoryStream(); input.Position = 0; var zip = new GZipStream(input, CompressionMode.Decompress, true); StreamHelper.Read(zip, output, 64); result = output.ToArray(); zip.Close(); zip.Dispose(); input.Close(); input.Dispose(); output.Close(); output.Dispose(); return result; } } }