GZipStream.Write方法

5 c# compression bytearray gzipstream

我已经阅读了一会儿GZipStream及其Write方法.我试图做的是从流中转换压缩数据并将其放在一个字节数组中.我将在下面留下我的代码,因为我相信它会有很大帮助.

public static void Compress(byte[] fi)
{
    using (MemoryStream inFile = new MemoryStream(fi))
    using (FileStream outFile = File.Create(@"C:\Compressed.exe"))
    using (GZipStream Compress = new GZipStream(outFile, CompressionMode.Compress))
    {
        inFile.CopyTo(Compress);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想将压缩数据写入字节数组,而不是写入磁盘上的文件,然后返回字节数组(假设我当然是这个函数).

svi*_*ick 6

您可以简单地使用另一个MemoryStream及其ToArray方法.

public static byte[] Compress(byte[] fi)
{
    using (MemoryStream outFile = new MemoryStream())
    {
        using (MemoryStream inFile = new MemoryStream(fi))
        using (GZipStream Compress = new GZipStream(outFile, CompressionMode.Compress))
        {
            inFile.CopyTo(Compress);
        }
        return outFile.ToArray();
    }
}
Run Code Online (Sandbox Code Playgroud)