public class MsgCompressHelper
{
public static byte[] Compress(string str, Encoding encoding)
{
return Compress(ConvertStringToBytes(str, encoding));
}
public static string Decompress(byte[] bts, Encoding encoding)
{
return ConvertBytesToString(Decompress(bts), encoding);
}
public static byte[] Compress(byte[] uncompressed)
{
using (MemoryStream ms = new MemoryStream())
using (GZipStream gzs = new GZipStream(ms, CompressionMode.Compress))
{
gzs.Write(uncompressed, 0, uncompressed.Length);
gzs.Close();
return ms.ToArray();
}
}
public static byte[] Decompress(byte[] compressed)
{
byte[] buffer = new byte[4096];
using (MemoryStream ms = new MemoryStream(compressed))
using (GZipStream gzs = new GZipStream(ms, CompressionMode.Decompress))
using (MemoryStream uncompressed = new MemoryStream())
{
for (int r = -1; r != 0; r = gzs.Read(buffer, 0, buffer.Length))
if (r > 0) uncompressed.Write(buffer, 0, r);
return uncompressed.ToArray();
}
}
public static byte[] ConvertStringToBytes(string str, Encoding encoding)
{
if (str == null)
return null;
if (encoding == null)
throw new Exception("Input encoding cannot be null.");
return encoding.GetBytes(str);
}
public static string ConvertBytesToString(byte[] bts, Encoding encoding)
{
if (bts == null || bts.Length <= 0)
return null;
if (encoding == null)
throw new Exception("Input encoding cannot be null.");
return encoding.GetString(bts);
}
}
基於Gzip的壓縮解壓縮幫助類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.