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

标签 c# .net compression

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

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

最佳答案

Is it possible to do using only the .NET platform?

当然 - 这正是 System.IO.Compression命名空间是为了。例如,您可以使用 GZipStream类(class)。使用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 作为替代压缩形式。

关于c# - 我想压缩一个 byte[] 并返回一个 byte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16070733/

相关文章:

c# - 在 MVC 中同时将数据写入两个表时遇到问题

c# - 如何向图像添加自定义 EXIF 标签

.net - 如何检查方法中通用对象的类型?

c# - 错误进程无法访问该文件,因为在 .NET Core 上通过 CLI 构建项目时它正被另一个进程使用

c# - 在 C# 中解析 XML

java - 使用 ISO 字符集压缩文件时,线程 "main"java.util.zip.ZipException : Not in GZIP format. 中出现异常

c# - 在c#中检查flowLayoutPanel是否为空

audio - 获取MP3音频压缩库

c# - 多次复制相同文件的文件夹的高效压缩

c# - 标准化文件夹中的文件名