1. /// <summary>
  2. /// 将Gzip的byte数组读取为字符串
  3. /// </summary>
  4. /// <param name="bytes"></param>
  5. /// <param name="encoding"></param>
  6. /// <returns></returns>
  7. public static string ReadGzip(byte[] bytes, string encoding = "GB2312")
  8. {
  9. string result = string.Empty;
  10. using (MemoryStream ms = new MemoryStream(bytes))
  11. {
  12. using (GZipStream decompressedStream = new GZipStream(ms, CompressionMode.Decompress))
  13. {
  14. using (StreamReader sr = new StreamReader(decompressedStream, Encoding.GetEncoding(encoding)))
  15. {
  16. result = sr.ReadToEnd();
  17. }
  18. }
  19. }
  20. return result;
  21. }
  22.  
  23. /// <summary>
  24. /// 将字符串压缩成Gzip格式的byte数组
  25. /// </summary>
  26. /// <param name="str"></param>
  27. /// <param name="encoding"></param>
  28. /// <returns></returns>
  29. public static byte[] WriteGzip(string str, string encoding = "GB2312")
  30. {
  31. byte[] rawData = System.Text.Encoding.UTF8.GetBytes(str);
  32. using (MemoryStream ms = new MemoryStream())
  33. {
  34. GZipStream compressedzipStream = new GZipStream(ms, CompressionMode.Compress, true);
  35. compressedzipStream.Write(rawData, , rawData.Length);
  36. compressedzipStream.Close();
  37. return ms.ToArray();
  38. }
  39. }
  40.  
  41. /// <summary>
  42. /// 解压Gzip文件,返回字符串
  43. /// </summary>
  44. /// <param name="fileName">文件全路径</param>
  45. /// <returns>字符串</returns>
  46. public static string ReadGzipFromFile(string fileName)
  47. {
  48. using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
  49. {
  50. using (GZipStream decompressedStream = new GZipStream(fileStream, CompressionMode.Decompress))
  51. {
  52. StreamReader reader = new StreamReader(decompressedStream);
  53. string result = reader.ReadToEnd();//重点
  54. reader.Close();
  55. return result;
  56. }
  57. }
  58. }

外面可以通过File.ReadAllBytes()和File.WriteAllBytes()进行文件的操作。而GZIP文件的后缀名为.gz

灵感来源:http://www.cnblogs.com/gengaixue/p/3300664.html

C#对GZIP压缩和解压的更多相关文章

  1. VB6进行GZIP解压&C#进行GZIP压缩和解压

    VB进行GZIP解压的,DLL是系统的,如果没有 [点击下载] Option Explicit 'GZIP API '----------------------------------------- ...

  2. 对数据进行GZIP压缩和解压

    public class GzipUtils { /** * 对字符串进行gzip压缩 * @param data * @return * @throws IOException */ public ...

  3. Gzip压缩和解压

    /// <summary> /// 将传入字符串以GZip算法压缩后,返回Base64编码字符 /// </summary> /// <param name=" ...

  4. java GZIP压缩和解压

    最近碰到了一个按GZIP解压指定的输入流数据,备份下 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream ...

  5. C#实现通过Gzip来对数据进行压缩和解压

    C#实现通过Gzip来对数据进行压缩和解压 internal static byte[] Compress(byte[] data) { using (var compressedStream = n ...

  6. 使用pako.js实现gzip的压缩和解压

    poko.js可至Github下载:https://github.com/nodeca/pako 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...

  7. linux常用命令:4文件压缩和解压命令

    文件压缩和解压命令 压缩命令:gzip.tar[-czf].zip.bzip2 解压缩命令:gunzip.tar[-xzf].unzip.bunzip2 1. 命令名称:gzip 命令英文原意:GNU ...

  8. .net文件压缩和解压及中文文件夹名称乱码问题

    /**************************注释区域内为引用http://www.cnblogs.com/zhaozhan/archive/2012/05/28/2520701.html的博 ...

  9. Linux下的压缩和解压

    1. gzip, bzip2 能否直接压缩目录呢?不可以 2. 请快速写出,使用gzip和bzip2压缩和解压一个文件的命令.压缩:gzip 1.txt bzip2 1.txt解压:gzip -d 1 ...

随机推荐

  1. 浏览器测试string是否为图片

    在浏览器中直接打如下代码.其中adcd为图片转成的string data:image/jpeg;base64,abcd

  2. yii2csrf攻击

    第一种解决办法是关闭Csrf public function init(){ $this->enableCsrfValidation = false; } 第二种解决办法是在form表单中加入隐 ...

  3. uva12083 二分图 求最大独立集 转化为求最大匹配 由题意推出二分图

    这题大白书例题 : Frank 是一个思想有些保守的高中老师,有一次,他需要带一些学生出去旅行,但又怕其中一些学生在旅途中萌生爱意.为了降低这种事情的发生概率,他决定确保带出去的任意两个学生至少要满足 ...

  4. MySQL从删库到跑路_高级(七)——事务和锁

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.事务简介 1.事务简介 事务(Transaction)是指作为单个逻辑工作单元执行的一系列操作. 2.事物的特效 ...

  5. MyBatis学习笔记(八)——Mybatis3.x与Spring4.x整合

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4271627.html 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: mvn arc ...

  6. Python中的is和==的区别,==判断值是否相等,is判断地址是否一致

    Python中的is和==的区别 Python中的对象包含三要素:id.type.value. 其中id用来唯一标示一个对象,type标识对象的类型,value是对象的值. is判断的是a对象是否就是 ...

  7. 在thinkphp里面执行原生的sql语句

    在thinkphp里面执行原生的sql语句 怎样在thinkphp里面执行原生的sql语句? $Model = new Model();//或者 $Model = D(); 或者 $Model = M ...

  8. C++结构体字节对齐

    转自:http://www.cnblogs.com/JensenCat/p/4770171.html 这里是头文件结构的定义: 一个非字节对齐结构体_tagTest2 一个字节对齐_tagTest3 ...

  9. 开启你的kali linux DIY之旅

    更新源 首先 是kali2016.2更新源的问题,网上找了好久,都不是很满意.后来把kali 2016.2安装到实体机中才发现,里面自带了更新源.下面我把这个官方自带更新源分享出来(速度蛮快的) de ...

  10. TED #09# You don't have to be an expert to solve big problems

    Tapiwa Chiwewe: You don't have to be an expert to solve big problems Collection noticed a haze hangi ...