C#压缩和解压字符串的方法

嗯,就是将比较大的字符串进行压缩,使其占用空间小一点,一般用在有时候接口间需要传输大量数据的时候(json数据较大或者含有base64),缩小体积以加快传输小效率。

实现功能:

压缩和解压字符串

开发环境:

开发工具:Visual Studio 2013

.NET Framework版本:4.5.

实现代码:

string fileData = "", compress = "";
private void btnPath_Click(object sender, EventArgs e)
{
    OpenFileDialog ofd = new OpenFileDialog();
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        textBox1.Text = ofd.FileName;
        FileInfo fi = new FileInfo(ofd.FileName);
        GetSize(fi.Length, lbFile);
        fileData = File.ReadAllText(ofd.FileName);
    }
}
private void btnCompress_Click(object sender, EventArgs e)
{
    compress = Compress(fileData);
    GetSize(Encoding.Default.GetBytes(compress).Length, lbCompress);
    MessageBox.Show("成功");
}
private void btnDecompress_Click(object sender, EventArgs e)
{
    richTextBox1.Text = Decompress(compress);
    MessageBox.Show("成功");
}
//压缩字符串
public string Compress(string value)
{
    try
    {
        string data = "";
        byte[] byteArray = Encoding.Default.GetBytes(value);
        using (MemoryStream ms = new MemoryStream())
        {
            using (GZipStream sw = new GZipStream(ms, CompressionMode.Compress))
            {
                sw.Write(byteArray, 0, byteArray.Length);
                GetSize(ms.Length, lbCompress);
            }

            data = Convert.ToBase64String(ms.ToArray());
        }
        return data;
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

//解压缩字符串
public string Decompress(string value)
{
    try
    {
        string data = "";
        byte[] bytes = Convert.FromBase64String(value);
        using (MemoryStream msReader = new MemoryStream())
        {
            using (MemoryStream ms = new MemoryStream(bytes))
            {
                using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress))
                {
                    byte[] buffer = new byte[1024];
                    int readLen = 0;
                    while ((readLen = zip.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        msReader.Write(buffer, 0, readLen);
                    }
                }
            }
            data = Encoding.Default.GetString(msReader.ToArray());
        }
        return data;
    }
    catch (Exception ex)
    {
        throw ex;
    }
}
//获取大小
private void GetSize(long size, Control control)
{
    string sizeStr = "";
    if (size < 1024)
        sizeStr = size.ToString("F2") + " Byte";
    else if (size >= 1024 && size < 1048576)
        sizeStr = (size / 1024).ToString("F2") + " K";
    else if (size >= 1048576 && size < 1073741824)
        sizeStr = (size / 1024 / 1024).ToString("F2") + " M";
    else if (size >= 1073741824)
        sizeStr = (size / 1024 / 1024 / 1024).ToString("F2") + " G";
    control.Text = sizeStr;
}

实现效果:

C#压缩和解压字符串的方法