我想压缩一个byte []并返回一个byte []

时间:2013-04-17 21:40:09

标签: c# .net compression

我想在C#中编写一个带有byte []并将其压缩到另一个byte []的方法,但我能找到的是从目录压缩到另一个目录(ZipFile library)的库。

是否可以仅使用.NET平台?

1 个答案:

答案 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作为替代压缩格式。