1

我想在 C# 中编写一个方法,它需要一个字节 [] 并将其压缩到另一个字节 [],但我能找到的只是从一个目录压缩到另一个目录的库(ZipFile 库)。

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

4

1 回答 1

5

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

当然——这正是System.IO.Compression命名空间的用途。例如,您可以使用GZipStream该类。使用aMemoryStream接收压缩后的数据,之后就可以调用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用作替代压缩形式。

于 2013-04-17T21:42:29.940 回答