C# WinForm 字符串压缩解压缩工具 - GZipStream 实现
使用 C# WinForm 窗口程序,使用两个文本框,在一个文本框中输入需要压缩的字符串,另一个文本框中输出。
不考虑数字的情况,假设只输入字母内容:
可以使用 C# 语言中的 System.IO.Compression 命名空间中的 GZipStream 类来实现字符串压缩和解压缩。
以下是一个简单的示例代码:
using System;
using System.IO;
using System.IO.Compression;
using System.Windows.Forms;
namespace StringCompressor
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void btnCompress_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtInput.Text))
{
MessageBox.Show('请输入需要压缩的字符串!');
return;
}
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(txtInput.Text);
using (MemoryStream ms = new MemoryStream())
{
using (GZipStream gzip = new GZipStream(ms, CompressionMode.Compress, true))
{
gzip.Write(buffer, 0, buffer.Length);
}
byte[] compressedData = ms.ToArray();
txtOutput.Text = Convert.ToBase64String(compressedData);
}
}
private void btnDecompress_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtOutput.Text))
{
MessageBox.Show('请输入需要解压的字符串!');
return;
}
byte[] compressedData = Convert.FromBase64String(txtOutput.Text);
using (MemoryStream ms = new MemoryStream(compressedData))
{
using (GZipStream gzip = new GZipStream(ms, CompressionMode.Decompress))
{
using (StreamReader reader = new StreamReader(gzip))
{
string decompressedData = reader.ReadToEnd();
txtInput.Text = decompressedData;
}
}
}
}
}
}
其中,btnCompress_Click 方法实现了字符串压缩的功能,btnDecompress_Click 方法实现了字符串解压缩的功能。在这两个方法中,使用了 MemoryStream 类来将字节数据缓存到内存中,使用 GZipStream 类来进行压缩和解压缩操作。需要注意的是,在压缩时需要将压缩模式设置为 CompressionMode.Compress,在解压缩时需要将压缩模式设置为 CompressionMode.Decompress。另外,为了方便展示和传输,压缩后的字节数据使用了 Base64 编码。
原文地址: https://www.cveoy.top/t/topic/lq2d 著作权归作者所有。请勿转载和采集!