1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.IO.Compression;
  5. using System.Linq;
  6. using System.Text;
  7.  
  8. namespace 落地页测试代码
  9. {
  10. public class GZip
  11. {
  12. /// <summary>
  13. /// 压缩
  14. /// </summary>
  15. /// <param name="text">文本</param>
  16. public static string Compress(string text)
  17. {
  18. if (text=="")
  19. return string.Empty;
  20. byte[] buffer = Encoding.UTF8.GetBytes(text);
  21. return Convert.ToBase64String(Compress(buffer));
  22. }
  23.  
  24. /// <summary>
  25. /// 解压缩
  26. /// </summary>
  27. /// <param name="text">文本</param>
  28. public static string Decompress(string text)
  29. {
  30. if (text=="")
  31. return string.Empty;
  32. byte[] buffer = Convert.FromBase64String(text);
  33. using (var ms = new MemoryStream(buffer))
  34. {
  35. using (var zip = new GZipStream(ms, CompressionMode.Decompress))
  36. {
  37. using (var reader = new StreamReader(zip))
  38. {
  39. return reader.ReadToEnd();
  40. }
  41. }
  42. }
  43. }
  44.  
  45. /// <summary>
  46. /// 压缩
  47. /// </summary>
  48. /// <param name="buffer">字节流</param>
  49. public static byte[] Compress(byte[] buffer)
  50. {
  51. if (buffer == null)
  52. return null;
  53. using (var ms = new MemoryStream())
  54. {
  55. using (var zip = new GZipStream(ms, CompressionMode.Compress, true))
  56. {
  57. zip.Write(buffer, , buffer.Length);
  58. }
  59. return ms.ToArray();
  60. }
  61. }
  62.  
  63. /// <summary>
  64. /// 解压缩
  65. /// </summary>
  66. /// <param name="buffer">字节流</param>
  67. public static byte[] Decompress(byte[] buffer)
  68. {
  69. if (buffer == null)
  70. return null;
  71. return Decompress(new MemoryStream(buffer));
  72. }
  73.  
  74. /// <summary>
  75. /// 压缩
  76. /// </summary>
  77. /// <param name="stream">流</param>
  78. public static byte[] Compress(Stream stream)
  79. {
  80. if (stream == null || stream.Length == )
  81. return null;
  82. return Compress(StreamToBytes(stream));
  83. }
  84.  
  85. /// <summary>
  86. /// 解压缩
  87. /// </summary>
  88. /// <param name="stream">流</param>
  89. public static byte[] Decompress(Stream stream)
  90. {
  91. if (stream == null || stream.Length == )
  92. return null;
  93. using (var zip = new GZipStream(stream, CompressionMode.Decompress))
  94. {
  95. using (var reader = new StreamReader(zip))
  96. {
  97. return Encoding.UTF8.GetBytes(reader.ReadToEnd());
  98. }
  99. }
  100. }
  101. /// <summary>
  102. /// 流转换为字节流
  103. /// </summary>
  104. /// <param name="stream">流</param>
  105. public static byte[] StreamToBytes(Stream stream)
  106. {
  107. stream.Seek(, SeekOrigin.Begin);
  108. var buffer = new byte[stream.Length];
  109. stream.Read(buffer, , buffer.Length);
  110. return buffer;
  111. }
  112. }
  113. }

C# 解压缩工具类GZip的更多相关文章

  1. GZIP压缩、解压缩工具类

    GZIP压缩.解压缩工具类: public class GZIPUtiles { public static String compress(String str) throws IOExceptio ...

  2. ZIP解压缩工具类

    import java.io.File; import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.Expan ...

  3. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2 新增解压缩工具类ZipHelper

    在项目对文件进行解压缩是非常常用的功能,对文件进行压缩存储或传输可以节省流量与空间.压缩文件的格式与方法都比较多,比较常用的国际标准是zip格式.压缩与解压缩的方法也很多,在.NET 2.0开始,在S ...

  4. AntZipUtils【基于Ant的Zip压缩解压缩工具类】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 Android 压缩解压zip文件一般分为两种方式: 基于JDK的Zip压缩工具类 该版本存在问题:压缩时如果目录或文件名含有中文, ...

  5. ZIP解压缩文件的工具类【支持多级文件夹|全】

    ZIP解压缩文件的工具类[支持多级文件夹|全] 作者:Vashon 网上有非常多的加压缩演示样例代码.可是都仅仅是支持一级文件夹的操作.假设存在多级文件夹的话就不行了. 本解压缩工具类经过多次检查及重 ...

  6. ZIP解压缩文件的工具类【支持多级目录|全】

    ZIP解压缩文件的工具类[支持多级目录|全] 作者:Vashon 网上有很多的加压缩示例代码,但是都只是支持一级目录的操作,如果存在多级目录的话就不行了.本解压缩工具类经过多次检查及重构,最终分享给大 ...

  7. C#工具类:使用SharpZipLib进行压缩、解压文件

    SharpZipLib是一个开源的C#压缩解压库,应用非常广泛.就像用ADO.NET操作数据库要打开连接.执行命令.关闭连接等多个步骤一样,用SharpZipLib进行压缩和解压也需要多个步骤.Sha ...

  8. java工具类——java将一串数据按照gzip方式压缩和解压缩

    我要整理在工作中用到的工具类分享出来,也方便自己以后查阅使用,这些工具类都是我自己实际工作中使用的 import java.io.ByteArrayInputStream; import java.i ...

  9. java解压缩zip和rar的工具类

    package decompress; import java.io.File; import java.io.FileOutputStream; import org.apache.tools.an ...

随机推荐

  1. quotes 整站数据爬取存mongo

    安装完成scrapy后爬取部分信息已经不能满足躁动的心了,那么试试http://quotes.toscrape.com/整站数据爬取 第一部分 项目创建 1.进入到存储项目的文件夹,执行指令 scra ...

  2. array数组(n,1)和(n,)互相转换

    data.shape #(172,1) result = [arr[0] for arr in data] result.shape #(172,) (172,1)表示是一个(172,1)shape大 ...

  3. U68364 _GC滑迷宫

    题目背景 _GC买了一双蔡徐坤一代. 题目描述 _GC进入了一个n*m的迷宫.本题的特殊之处在于,_GC只能滑着走.具体来说就是,选定一个方向后,_GC会一直向该方向滑,直到撞到墙.会给出_GC的起始 ...

  4. Oracle中的AWR,全称为Automatic Workload Repository

    Oracle中的AWR,全称为Automatic Workload Repository,自动负载信息库.它收集关于特定数据库的操作统计信息和其他统计信息,Oracle以固定的时间间隔(默认为1个小时 ...

  5. vue stylus 格式化问题

    IDE是vscode 安装了.vetur插件 由于stylus可以仅用缩进不用写大括号之类的,所以十分方便, 但有个问题,按alt shift F 格式化时,vetur这个插件会默认添加上正常css的 ...

  6. [leetcode] 5.Longest Palindromic Substring-2

    想了很多方法 搞轴对称,算对称轴,偶数都高出了一堆0.5在那加加减减,最后发现在移轴之前可能就返回了. class Solution: def longestPalindrome(self, s: s ...

  7. CPU监控

    题目描述 Bob需要一个程序来监视CPU使用率.这是一个很繁琐的过程,为了让问题更加简单,Bob会慢慢列出今天会在用计算机时做什么事. Bob会干很多事,除了跑暴力程序看视频之外,还会做出去玩玩和用鼠 ...

  8. web技术应用分享

    https://www.helloweba.com/nav.html      Helloweba为广大前端开发者收录了常用实用的前端资源工具,方便大家学习和查阅. https://www.hello ...

  9. 第五周博客作业<西北师范大学|李晓婷>

    1.助教博客链接:https://home.cnblogs.com/u/lxt-/ 2.作业要求链接:https://www.cnblogs.com/nwnu-daizh/p/10527959.htm ...

  10. IDEA 常用配置

    调节代码字体大小 设置:File --- Settings... --- Editor --- General --- 勾选Change font size(Zoom) with Ctrl + Mou ...