国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#實現壓縮和解壓縮的方法示例【Gzip和Zip方式】

2020-01-24 00:38:10
字體:
來源:轉載
供稿:網友

本文實例講述了C#實現壓縮和解壓縮的方法。分享給大家供大家參考,具體如下:

使用ICSharpCode.SharpZipLib.dll來壓縮/解壓(壓縮效率比GZip要高一點)

public static class ZipUtil{    /// <summary>    /// 壓縮    /// </summary>    /// <param name="param"></param>    /// <returns></returns>    public static string Compress(string param)    {      byte[] data = System.Text.Encoding.UTF8.GetBytes(param);      //byte[] data = Convert.FromBase64String(param);      MemoryStream ms = new MemoryStream();      Stream stream = new ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream(ms);      try      {        stream.Write(data, 0, data.Length);      }      finally      {        stream.Close();        ms.Close();      }      return Convert.ToBase64String(ms.ToArray());    }    /// <summary>    /// 解壓    /// </summary>    /// <param name="param"></param>    /// <returns></returns>    public static string Decompress(string param)    {      string commonString = "";      byte[] buffer = Convert.FromBase64String(param);      MemoryStream ms = new MemoryStream(buffer);      Stream sm = new ICSharpCode.SharpZipLib.BZip2.BZip2InputStream(ms);      //這里要指明要讀入的格式,要不就有亂碼      StreamReader reader = new StreamReader(sm, System.Text.Encoding.UTF8);      try      {        commonString = reader.ReadToEnd();      }      finally      {        sm.Close();        ms.Close();      }      return commonString;    }}

使用GZip來壓縮/解壓縮(字符串)

public static class GZipUtil{    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();    }}

更多關于C#相關內容感興趣的讀者可查看本站專題:《C#常見控件用法教程》、《WinForm控件用法總結》、《C#數據結構與算法教程》、《C#面向對象程序設計入門教程》及《C#程序設計之線程使用技巧總結

希望本文所述對大家C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庐江县| 余姚市| 固始县| 平果县| 秦皇岛市| 郯城县| 类乌齐县| 岱山县| 澜沧| 东宁县| 芦山县| 潼关县| 竹山县| 许昌县| 开平市| 綦江县| 金堂县| 淄博市| 丹阳市| 肇庆市| 利津县| 龙江县| 阳东县| 左贡县| 通化市| 德钦县| 乾安县| 弋阳县| 马尔康县| 武安市| 凯里市| 新平| 宝鸡市| 太原市| 墨玉县| 江源县| 宜黄县| 波密县| 永昌县| 汉沽区| 芜湖县|