如何使用C#中的Zlib库实现GZip和Deflate类型压缩?

如何使用C#中的Zlib库实现GZip和Deflate类型压缩?,c#,compression,gzip,zlib,C#,Compression,Gzip,Zlib,我已经下载了“zlib.net mutriplatform”Version=“1.0.4”nuget软件包,并编写了如下压缩代码。我有点困惑它是否是GZip压缩。我们需要支持“gzip”和“deflate”型压缩 using ComponentAce.Compression.Libs.zlib; using System.Diagnostics; using System.IO; using System.Reflection; using System.Text; namespace GZi

我已经下载了“zlib.net mutriplatform”Version=“1.0.4”nuget软件包,并编写了如下压缩代码。我有点困惑它是否是GZip压缩。我们需要支持“gzip”和“deflate”型压缩

using ComponentAce.Compression.Libs.zlib;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Text;

namespace GZipTest
{
    public static class ZlibCompression
    {
        public static void Test()
        {
            Trace.WriteLine("****************ZLib Test*****************************");
            var testFile = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "test.json");
            var text = Encoding.UTF8.GetBytes(File.ReadAllText(testFile));
            var ipStringSize = text.Length;
            Trace.WriteLine($"Input  string size: {ipStringSize}");
            var compressedTest = CompressData(text);
            var opStringSize = compressedTest.Length;
            Trace.WriteLine($"Output  string size: {opStringSize}");
            float stringCompressionRatio = (float)opStringSize / ipStringSize;
            Trace.WriteLine("Compression Ratio using Zlib" + stringCompressionRatio);
        }

        public static byte[] CompressData(byte[] inData)
        {
            using (MemoryStream outMemoryStream = new MemoryStream())                
            using (ZOutputStream outZStream = new ZOutputStream(outMemoryStream, zlibConst.Z_DEFAULT_COMPRESSION))
            using (Stream inMemoryStream = new MemoryStream(inData))
            {
                CopyStream(inMemoryStream, outZStream);
                outZStream.finish();
                var outData = outMemoryStream.ToArray();
                return outData;
            }            
        }

        public static void CopyStream(System.IO.Stream input, System.IO.Stream output)
        {
            byte[] buffer = new byte[2000];
            int len;
            while ((len = input.Read(buffer, 0, 2000)) > 0)
            {
                output.Write(buffer, 0, len);
            }
            output.Flush();
        }
    }
}
在我们的需求中,我们还需要使用“deflate”压缩类型。如何使用该库实现这一点