xx using System.IO.Compression;
public class StringCompress
    {
        /// <summary>  
        /// 字符串压缩  
        /// </summary>  
        /// <param name="strSource"></param>  
        /// <returns></returns>  
        public static byte[] Compress(byte[] data)
        {
            MemoryStream ms = null;
            GZipStream zip = null;
            try
            {
                ms = new MemoryStream();
                zip = new GZipStream(ms, CompressionMode.Compress, true);
                zip.Write(data, 0, data.Length);
                zip.Close();
                byte[] buffer = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(buffer, 0, buffer.Length);
                ms.Close();
                return buffer;
            }
            catch (Exception e)
            {
                Inf.DevLib.Diagnostics.AppTraceLog.WriteException(e);
                return null;
            }
            finally {
                if (zip != null)
                {
                    zip.Close();
                }
                if (ms != null)
                {
                    ms.Close();
                }
            }
        }
        /// <summary>  
        /// 字符串解压缩  
        /// </summary>  
        /// <param name="strSource"></param>  
        /// <returns></returns>  
        public static byte[] Decompress(byte[] data)
        {
            MemoryStream ms = null;
            GZipStream zip = null;
            MemoryStream msreader = null;
            try
            {
                ms = new MemoryStream(data);
                zip = new GZipStream(ms, CompressionMode.Decompress, true);
                msreader = new MemoryStream();
                byte[] buffer = new byte[0x1000];
                while (true)
                {
                    int reader = zip.Read(buffer, 0, buffer.Length);
                    if (reader <= 0)
                    {
                        break;
                    }
                    msreader.Write(buffer, 0, reader);
                }
                zip.Close();
                ms.Close();
                msreader.Position = 0;
                buffer = msreader.ToArray();
                msreader.Close();
                return buffer;
            }
            catch (Exception e)
            {
                Inf.DevLib.Diagnostics.AppTraceLog.WriteException(e);
                return null;
            }
            finally {
                if (zip != null)
                {
                    zip.Close();
                }
                if (ms != null)
                {
                    ms.Close();
                }
                if (msreader != null)
                {
                    msreader.Close();
                }
            }
        }
        public static string CompressString(string str)
        {
            string compressString = "";
            byte[] compressBeforeByte = Encoding.GetEncoding("UTF-8").GetBytes(str);
            byte[] compressAfterByte = Compress(compressBeforeByte);
            if (compressAfterByte != null)
            {
                compressString = Convert.ToBase64String(compressAfterByte);
            }
            return compressString;
        }
        public static string DecompressString(string str)
        {
            string compressString = "";  
            byte[] compressBeforeByte = Convert.FromBase64String(str);
            byte[] compressAfterByte = Decompress(compressBeforeByte);
            if (compressAfterByte != null)
            {
                compressString = Encoding.GetEncoding("UTF-8").GetString(compressAfterByte);
            }
            
            return compressString;
        }
        /// <summary>  
        /// 解压  
        /// </summary>  
        /// <param name="param"></param>  
        /// <returns></returns>  
        public static string DecompressZlib(string param)
        {
            string commonString = "";
            byte[] buffer = Convert.FromBase64String(param);
            MemoryStream ms = new MemoryStream(buffer);
            Stream sm = new ICSharpCode.SharpZipLib.Zip.ZipInputStream(ms);
            //这里要指明要读入的格式,要不就有乱码  
            StreamReader reader = new StreamReader(sm, System.Text.Encoding.UTF8);
            try
            {
                commonString = reader.ReadToEnd();
            }
            finally
            {
                sm.Close();
                ms.Close();
            }
            return commonString;
        }
    }
                    
                
                
            
        
浙公网安备 33010602011771号