- class ZipLib
- {
- public static string Zip(string value)
- {
- //Transform string into byte[]
- byte[] byteArray = new byte[value.Length];
- int indexBA = 0;
- foreach (char item in value.ToCharArray())
- {
- byteArray[indexBA++] = (byte)item;
- }
- //Prepare for compress
- System.IO.MemoryStream ms = new System.IO.MemoryStream();
- System.IO.Compression.GZipStream sw = new System.IO.Compression.GZipStream(ms,
- System.IO.Compression.CompressionMode.Compress);
- //Compress
- sw.Write(byteArray, 0, byteArray.Length);
- //Close, DO NOT FLUSH cause bytes will go missing...
- sw.Close();
- //Transform byte[] zip data to string
- byteArray = ms.ToArray();
- System.Text.StringBuilder sB = new System.Text.StringBuilder(byteArray.Length);
- foreach (byte item in byteArray)
- {
- sB.Append((char)item);
- }
- ms.Close();
- sw.Dispose();
- ms.Dispose();
- return sB.ToString();
- }
- public static string UnZip(string value)
- {
- //Transform string into byte[]
- byte[] byteArray = new byte[value.Length];
- int indexBA = 0;
- foreach (char item in value.ToCharArray())
- {
- byteArray[indexBA++] = (byte)item;
- }
- //Prepare for decompress
- System.IO.MemoryStream ms = new System.IO.MemoryStream(byteArray);
- System.IO.Compression.GZipStream sr = new System.IO.Compression.GZipStream(ms,
- System.IO.Compression.CompressionMode.Decompress);
- //Reset variable to collect uncompressed result
- byteArray = new byte[byteArray.Length];
- //Decompress
- int rByte = sr.Read(byteArray, 0, byteArray.Length);
- //Transform byte[] unzip data to string
- System.Text.StringBuilder sB = new System.Text.StringBuilder(rByte);
- //Read the number of bytes GZipStream red and do not a for each bytes in
- //resultByteArray;
- for (int i = 0; i < rByte; i++)
- {
- sB.Append((char)byteArray[i]);
- }
- sr.Close();
- ms.Close();
- sr.Dispose();
- ms.Dispose();
- return sB.ToString();
- }
- }
- string str_org="aaaaaaaaaabbbbbbbbbbbbcccccccccdddddddd";
- string str_comp = ZipLib.Zip(str_org);
- Console.WriteLine("str_comp:" + str_comp);
- string str_uncomp = ZipLib.UnZip(str_comp);
- Console.WriteLine("str_uncomp:" + str_uncomp);
- Console.ReadLine();