概述

之前做项目,涉及到存入到数据库或者http传输的数据量比较大,这个时候,就需要考虑在存入数据库或者发送传输之前,将数据压缩下,当从数据库中取出时,再解压还原数据。特地找了下发现有GZipStream可以实现这个功能。此类表示gzip数据格式,该格式使用行业标准算法进行无损文件压缩和解压缩。该格式包括用于检测数据损坏的循环冗余校验值。gzip数据格式使用与DeflateStream类相同的算法,但可以扩展为使用其他压缩格式。该格式很容易以专利未涵盖的方式实施。从.NET Framework 4.5开始,DeflateStream类使用zlib库进行压缩。因此,与.NET Framework的早期版本相比,它提供了更好的压缩算法,并且在大多数情况下,提供了较小的压缩文件。

GZipStream使用的一般流程如下:

打开一个现有的文件

打开/创建输出文件

创建GZipStream对象

逐字节读源文件,并把它传递到GZipStream

使用GZipStream写入到输出文件流

代码实现

1、压缩字符串

 /// <summary>/// 壓縮字串,回傳 Base64 結果/// </summary>/// <param name="text"></param>/// <returns></returns>public static string ZipText(string text){byte[] inputBytes = Encoding.UTF8.GetBytes(text);return ZipText(inputBytes);}public static string ZipText(byte[] inputBytes){using (MemoryStream outputStream = new MemoryStream()){using (GZipStream gs = new GZipStream(outputStream, CompressionMode.Compress)){gs.Write(inputBytes, 0, inputBytes.Length);}byte[] outputBytes = outputStream.ToArray();string result = Convert.ToBase64String(outputBytes);return result;}}

2、解压缩字符串

  /// <summary>/// 解壓縮字串/// </summary>/// <param name="zippedText"></param>/// <returns></returns>public static string UnzipZippedText(string zippedText){if (String.IsNullOrEmpty(zippedText)){return String.Empty;}string unzipedText = null;try{byte[] buffer = Convert.FromBase64String(zippedText);MemoryStream ms = new MemoryStream(buffer);GZipStream zipStream = new GZipStream(ms, CompressionMode.Decompress);using (StreamReader streamReader = new StreamReader(zipStream)){unzipedText = streamReader.ReadToEnd();}}catch (Exception ex){unzipedText = String.Empty;}return unzipedText;}

运行结果测试,源文件经过压缩大小只有120字节,而解压后,源文件与解压后txt的大小一致

使用GZipStream实现压缩和解压缩相关推荐

  1. C#自定义字符串压缩和解压缩源码库

    如下的内容是关于C#自定义字符串压缩和解压缩库的内容. class ZipLib{public static string Zip(string value){byte[] byteArray = n ...

  2. asp在线压缩和解压缩文件(文件夹)

    asp在线压缩和解压缩文件(文件夹) <% '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ '\\ '\\ 1. c:\ ...

  3. java 解压与压缩代码_Java实现多文件压缩和解压缩代码详解

    Java实现多文件压缩和解压缩代码 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStre ...

  4. Java 的zip压缩和解压缩

    Java 的zip压缩和解压缩 好久没有来这写东西了,今天中秋节,有个东西想拿出来分享,一来是工作中遇到的问题,一来是和csdn问候一下,下面就分享一个Java中的zip压缩技术,代码实现比较简单,代 ...

  5. Linux之压缩和解压缩命令

    Linux之压缩和解压缩命令 1. 压缩格式的介绍 Linux默认支持的压缩格式: .gz .bz2 .zip 说明: .gz和.bz2的压缩包需要使用tar命令来压缩和解压缩 .zip的压缩包需要使 ...

  6. asp.net在线压缩和解压缩的实现

    我们经常会遇到批量上传的问题,也会遇到将某个目录下所有文件都上传到服务器上的问题.那么,如何解决此类问题呢?以前的技术一般采用ActiveX等方式,这里我采用SharpZlib来实现,听说VS2005 ...

  7. linux下文件的压缩和解压缩

    linux下文件的压缩和解压缩 目录 1.压缩 2.解压缩 3.归档工具 一. 压缩 compress: -d:解压缩,相当于uncompres-c:结果输出至标准输出,不删除原文件-v:显示详情 - ...

  8. Qt中用QuaZip来压缩和解压缩文件

    1.简介 QuaZIP是使用Qt,C++对ZLIB进行简单封装的用于压缩ZIP以及解压缩ZIP的开源库.如果你的Qt项目当中用到了压缩以及解压缩ZIP的话你可以考虑选择使用它. 官方主页:http:/ ...

  9. Centos之压缩和解压缩命令

    常用压缩格式:.zip .gz .bz2 常用压缩格式:.tar.gz  .tar.bz2 1.zip格式压缩 zip压缩文件名 源文件 压缩文件 zip -r 压缩文件名 源目录 压缩目录 [roo ...

最新文章

  1. matlab 三维饼图,重新学习MATLAB——作图技法及3D可视化
  2. [给 ASP.NET初学者的话]挑书与买书,买适合自己的书
  3. python学习: 优秀Python学习资源收集汇总--转
  4. P3327 [SDOI2015]约数个数和 (mobius反演)
  5. 狂神说 es笔记_【开源推荐】专门为程序员朋友量身打造的笔记软件—— Boostnote...
  6. PCB工程师为你详解FPC排线及其用途
  7. Python常用快捷键整理
  8. Java图形用户界面实验
  9. 关于未来几年的发展,闰土有话要说
  10. Vmware虚拟机Ubuntu未发现WiFi适配器解决方案汇总
  11. MSP430系列单片机实用C语言程序设计 张晞pdf
  12. 计算机显示丢失d3dcompiler,无法启动此程序提示缺少d3dcompiler文件怎么解决
  13. (二)Redis——持久化详细解析
  14. 瑞隆源SMD3225气体放电管(GDT)系列
  15. 清华大学出版社2013第三期书评征集图书列表
  16. python高级语言翻译成机器语言的方式有两种_将高级语言编写的程序翻译成机器语言程序,采用的两种翻译方式是( )。...
  17. 一个简单的三维向量类
  18. 前端战无渣:”啊!贾克斯?武器大师?Ajax!XMLHttpRequest“
  19. 垃圾陷进-洛谷P1156
  20. X264算法参数四(analyse parameters)

热门文章

  1. c++ int 转 short_C/C++结构体内存对齐
  2. redis存opc_Redis集群的三种模式
  3. 2018-2019-2 20175223 实验三《敏捷开发与XP实践》实验报告
  4. FirstBird--项目流程
  5. windows 安装yaml支持和pytest支持等
  6. 寻找kernel32.dll的地址
  7. 静态成员变量和静态成员函数(static)
  8. ubuntu系统备份和还原_如何使用Aptik在Ubuntu中备份和还原您的应用程序和PPA
  9. hashmap 存取原理图_HashMap底层实现原理
  10. 用Cocos2dx开发棋牌游戏的观点解析