C# Gzip
时间: 2023-07-12 13:11:50 浏览: 94
C#使用GZIP解压缩
5星 · 资源好评率100%
在C#中,使用`System.IO.Compression`命名空间中的`GZipStream`类可以对数据进行Gzip压缩和解压缩。以下是一个简单的示例代码:
```csharp
using System;
using System.IO;
using System.IO.Compression;
class Program
{
static void Main(string[] args)
{
string inputString = "Hello World!";
// 压缩字符串
byte[] inputBytes = System.Text.Encoding.UTF8.GetBytes(inputString);
using (var outputStream = new MemoryStream())
{
using (var gzipStream = new GZipStream(outputStream, CompressionMode.Compress))
{
gzipStream.Write(inputBytes, 0, inputBytes.Length);
}
byte[] compressedBytes = outputStream.ToArray();
Console.WriteLine(Convert.ToBase64String(compressedBytes)); // 输出压缩后的字符串
}
// 解压缩字符串
byte[] compressedBytes2 = Convert.FromBase64String("H4sIAAAAAAAAACsuKcrMS1GyMDc3MzU0BQAAP//+QcAAAA=");
using (var inputStream = new MemoryStream(compressedBytes2))
{
using (var gzipStream = new GZipStream(inputStream, CompressionMode.Decompress))
{
using (var outputStream = new MemoryStream())
{
gzipStream.CopyTo(outputStream);
byte[] uncompressedBytes = outputStream.ToArray();
string outputString = System.Text.Encoding.UTF8.GetString(uncompressedBytes);
Console.WriteLine(outputString); // 输出解压缩后的字符串
}
}
}
}
}
```
在上面的代码中,我们首先将输入字符串转换为字节数组,然后使用`GZipStream`类进行压缩。在压缩时,我们创建一个输出流`outputStream`,然后将其传递给`GZipStream`类的构造函数。在调用`Write`方法时,`GZipStream`类将压缩数据写入输出流中。最后,我们将输出流转换为字节数组,并使用`Convert.ToBase64String`方法将其转换为base64编码的字符串进行输出。
在解压缩时,我们将压缩后的字节数组转换为输入流`inputStream`,然后再次使用`GZipStream`类进行解压缩。在解压缩时,我们创建一个输出流`outputStream`,然后使用`CopyTo`方法将解压缩后的数据从`GZipStream`类复制到输出流中。最后,我们将输出流转换为字节数组,并将其转换为字符串进行输出。
阅读全文