如何使用C#中的Zlib库实现GZip和Deflate类型压缩?
我已经下载了“zlib.net mutriplatform”Version=“1.0.4”nuget软件包,并编写了如下压缩代码。我有点困惑它是否是GZip压缩。我们需要支持“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
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”压缩类型。如何使用该库实现这一点