压缩和解压缩代码:
1 class ZipString 2 { 3 public static string Zip(string value) 4 { 5 byte[] byteArray = new byte[value.Length]; 6 7 int index = 0; 8 9 foreach (char item in value.ToCharArray()) 10 { 11 byteArray[index++] = (byte)item; 12 } 13 14 MemoryStream ms = new MemoryStream(); 15 GZipStream zipStream = new GZipStream(ms, CompressionMode.Compress); 16 17 // Compress 18 zipStream.Write(byteArray, 0, byteArray.Length); 19 20 zipStream.Close(); 21 22 byteArray = ms.ToArray(); 23 StringBuilder builder = new StringBuilder(byteArray.Length); 24 25 foreach (byte item in byteArray) 26 { 27 builder.Append((char)item); 28 } 29 30 ms.Close(); 31 zipStream.Close(); 32 ms.Dispose(); 33 zipStream.Dispose(); 34 35 return builder.ToString(); 36 } 37 38 public static string UnZip(string value) 39 { 40 byte[] byteArray = new byte[value.Length]; 41 int index = 0; 42 foreach (char item in value.ToCharArray()) 43 { 44 byteArray[index++] = (byte)item; 45 } 46 47 // Decompress 48 MemoryStream ms = new MemoryStream(byteArray); 49 GZipStream zipStream = new GZipStream(ms, CompressionMode.Decompress); 50 StreamReader reader = new StreamReader(zipStream); 51 52 string builder = reader.ReadToEnd(); 53 54 ms.Close(); 55 zipStream.Close(); 56 ms.Dispose(); 57 zipStream.Dispose(); 58 reader.Close(); 59 reader.Dispose(); 60 61 return builder; 62 } 63 }
测试代码:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 string str = "1234567890abcdefghijklmnopqrstuivwxyzabcdefghijklmnopqrstuivwxyzabcdefghijklmnopqrstuivwxyzabcdefghijklmnopqrstuivwxyzabcdefghijklmnopqrstuivwxyzabcdefghijklmnopqrstuivwxyz1234567890"; 6 Console.WriteLine(str.Length); 7 8 string zipStr = ZipString.Zip(str); 9 Console.WriteLine(zipStr); 10 Console.WriteLine(zipStr.Length); 11 12 string unZipStr = ZipString.UnZip(zipStr); 13 Console.WriteLine(unZipStr); 14 Console.WriteLine(unZipStr.Length); 15 16 Console.ReadKey(); 17 } 18 }