您的位置:首页 > 编程语言

常用代码段收集--压缩、解压

2008-11-23 14:28 363 查看
 
        /// <summary>
        /// 压缩
        /// </summary>
        /// <param name="vcompressString"></param>
        /// <returns></returns>
        public byte[] CompressString(string vcompressString)
        {
            byte[] result = null;
            if (vcompressString != null && vcompressString != "")
            {
                try
                {
                    byte[] vData = Encoding.UTF8.GetBytes(vcompressString);
                    MemoryStream input = new MemoryStream(vData);
                    MemoryStream output = new MemoryStream();
                    System.IO.Compression.GZipStream gzip = new System.IO.Compression.GZipStream(output,
                        System.IO.Compression.CompressionMode.Compress);
                    byte[] vBuf = new byte[4096];
                    int number;
                    while ((number = input.Read(vBuf, 0, 4096)) > 0)
                    {
                        gzip.Write(vBuf, 0, number);
                    }
                    gzip.Close();
                    input.Close();
                    result = output.ToArray();
                }
                catch (Exception E)
                {
                    MessageBox.Show("压缩字符串失败,原因: " + E.Message);
                }
            }
            return result;
        }

        /// <summary>
        /// 解缩
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public string Decompress(byte[] data)
        {
            string Result = "";
            if (data != null)
            {
                try
                {
                    MemoryStream input = new MemoryStream(data);
                    System.IO.Compression.GZipStream gzip = new System.IO.Compression.GZipStream(input, System.IO.Compression.CompressionMode.Decompress, true);
                    MemoryStream output = new MemoryStream();
                    byte[] buff = new byte[4096];
                    int read = -1;
                    read = gzip.Read(buff, 0, buff.Length);
                    while (read > 0)
                    {
                        output.Write(buff, 0, read);
                        read = gzip.Read(buff, 0, buff.Length);
                    }
                    gzip.Close();
                    input.Dispose();

                    Result = Encoding.UTF8.GetString(output.ToArray());
                }
                catch (Exception E)
                {
                    Result = "ERROR:无法获取数据,原因:" + E.Message;
                }
            }
            else
                Result = "ERROR:数据值为空!";
            return Result;
        }

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息