C#使用DeflateStream压缩与解压

01./// <summary>  
02.    /// 简单的压缩  
03.    /// </summary>  
04.    public static class CompressHelper  
05.    {  
06.        /// <summary>  
07.        /// 压缩字符串  
08.        /// </summary>  
09.        /// <param name="str"></param>  
10.        /// <returns></returns>  
11.        public static byte[] CompressString(string str)  
12.        {  
13.            return CompressBytes(Encoding.UTF8.GetBytes(str));  
14.        }  
15.  
16.        /// <summary>  
17.        /// 压缩二进制  
18.        /// </summary>  
19.        /// <param name="str"></param>  
20.        /// <returns></returns>  
21.        public static byte[] CompressBytes(byte[] str)  
22.        {  
23.            var ms = new MemoryStream(str) {Position = 0};  
24.            var outms = new MemoryStream();  
25.            using (var deflateStream = new DeflateStream(outms, CompressionMode.Compress, true))  
26.            {  
27.                var buf = new byte[1024];  
28.                int len;  
29.                while ((len = ms.Read(buf, 0, buf.Length)) > 0)  
30.                    deflateStream.Write(buf, 0, len);  
31.            }  
32.            return outms.ToArray();  
33.        }  
34.        /// <summary>  
35.        /// 解压字符串  
36.        /// </summary>  
37.        /// <param name="str"></param>  
38.        /// <returns></returns>  
39.        public static string DecompressString(byte[] str)  
40.        {  
41.            return Encoding.UTF8.GetString(DecompressBytes(str));  
42.        }  
43.        /// <summary>  
44.        /// 解压二进制  
45.        /// </summary>  
46.        /// <param name="str"></param>  
47.        /// <returns></returns>  
48.        public static byte[] DecompressBytes(byte[] str)  
49.        {  
50.            var ms = new MemoryStream(str) {Position = 0};  
51.            var outms = new MemoryStream();  
52.            using (var deflateStream = new DeflateStream(ms, CompressionMode.Decompress, true))  
53.            {  
54.                var buf = new byte[1024];  
55.                int len;  
56.                while ((len = deflateStream.Read(buf, 0, buf.Length)) > 0)  
57.                    outms.Write(buf, 0, len);  
58.            }  
59.            return outms.ToArray();  
60.        }  
61.    }  

 

posted @ 2013-09-12 15:38  therockthe  阅读(2044)  评论(0)    收藏  举报