我想在C#中编写一个带有byte []并将其压缩到另一个byte []的方法,但我能找到的是从目录压缩到另一个目录(ZipFile library)的库。
是否可以仅使用.NET平台?
答案 0 :(得分:5)
是否可以仅使用.NET平台?
当然 - 这正是System.IO.Compression
命名空间的用途。例如,您可以使用GZipStream
类。使用MemoryStream
接收压缩数据,之后您可以拨打ToArray
。
示例代码(未经测试):
public static byte[] Compress(byte[] data)
{
using (var output = new MemoryStream())
{
using (var compression = new GZipStream(output, CompressionMode.Compress))
{
compression.Write(data, 0, data.Length);
}
return output.ToArray();
}
}
public static byte[] Compress(byte[] data)
{
using (var output = new MemoryStream())
{
using (var compression = new GZipStream(output, CompressionMode.Decompress))
{
compression.Write(data, 0, data.Length);
}
return output.ToArray();
}
}
您也可以使用DeflateStream
作为替代压缩格式。