c# - GZipStream.Write 方法

标签 c# bytearray compression 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);
    }
}

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

最佳答案

您可以简单地使用另一个 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/

相关文章:

PDF Blob 不显示内容,Angular 2

c++ - 我可以使用像 bool 这样的数据类型来压缩数据同时提高可读性吗?

.net - 将 7z 文件视为 .NET 流

.net - 流和压缩

c# - 如何在 C# 中设置这样的常量 - Constants.Page.Title.MyCase -?

C - 从字节数组的一部分获取字符

c# - 克隆 Office Open XML 文档的最有效方法是什么?

java - Google Protobuf ByteString 与 Byte[]

c# - 如何在我的集成测试中使用 IConfiguration?

c# - 我怎样才能测试一个类(class)?