我已经阅读了一段时间关于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);
    }
}

我不想将压缩的数据写到字节数组上,然后返回字节数组(假设我使它成为函数),而不是写入磁盘上的文件。

最佳答案

您可以简单地使用另一个MemoryStream及其 ToArray method

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();
    }
}

关于c# - GZipStream.Write方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6077337/

10-10 13:42