亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2017年06月12日 11:13:37   作者:_iorilan  
這篇文章主要介紹了C#實現壓縮和解壓縮的方法,結合具體實例形式分析了Gzip和Zip兩種壓縮操作實現方法,需要的朋友可以參考下

本文實例講述了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#程序設計有所幫助。

相關文章

  • C# 多線程編程技術基礎知識入門

    C# 多線程編程技術基礎知識入門

    這篇文章主要介紹了C# 多線程編程技術基礎知識,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2020-02-02
  • C#中AS和IS關鍵字的用法

    C#中AS和IS關鍵字的用法

    這篇文章主要介紹了C#中AS和IS關鍵字的用法的相關資料,需要的朋友可以參考下
    2016-03-03
  • 基于Json序列化和反序列化通用的封裝完整代碼

    基于Json序列化和反序列化通用的封裝完整代碼

    JSON 是存儲和交換文本信息的語法。類似 XML。JSON 比 XML 更小、更快,更易解析。下面通過實例代碼給大家分享Json序列化和反序列化通用的封裝,需要的的朋友參考下吧
    2017-07-07
  • C# FileStream復制大文件

    C# FileStream復制大文件

    這篇文章主要為大家詳細介紹了C# FileStream復制大文件的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 使用C#編寫兩個漂亮時鐘的示例代碼

    使用C#編寫兩個漂亮時鐘的示例代碼

    這篇文章主要為大家分享了兩個使用C#編寫的兩個漂亮時鐘的示例代碼,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的可以了解一下
    2023-07-07
  • C# 中類型轉換方式之顯式轉換和 as 運算符

    C# 中類型轉換方式之顯式轉換和 as 運算符

    在 C# 中,有兩種常見的類型轉換方式:顯式轉換和as 運算符,它們用于在不同類型之間進行轉換,以下是對這兩種轉換方式的詳細解釋和示例說明,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • c# Graphics使用方法(畫圓寫字代碼)

    c# Graphics使用方法(畫圓寫字代碼)

    本文主要介紹了Graphics的使用方法,提供如何畫圓、寫字的代碼,大家參考使用吧
    2014-01-01
  • C#中值類型和引用類型的區(qū)別深度分析

    C#中值類型和引用類型的區(qū)別深度分析

    這篇文章主要介紹了C#中值類型和引用類型的區(qū)別深度分析,以通俗易懂的語言形象化的分析了C#中值類型和引用類型的區(qū)別,對于深入理解C#數據類型有著不錯的參考借鑒價值,需要的朋友可以參考下
    2014-11-11
  • C#中string用法實例詳解

    C#中string用法實例詳解

    這篇文章主要介紹了C#中string用法,非常詳細的總結了比較常見的關于C#中string的幾個常用方法,需要的朋友可以參考下
    2014-08-08
  • C#設計模式實現之生成器模式和責任鏈模式

    C#設計模式實現之生成器模式和責任鏈模式

    學完設計模式之后,你就感覺它會慢慢地影響到你寫代碼的思維方式,下面這篇文章主要給大家介紹了關于C#設計模式實現之生成器模式和責任鏈模式的相關資料,需要的朋友可以參考下
    2021-08-08

最新評論