using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Text; namespace 落地页测试代码
{
public class GZip
{
/// <summary>
/// 压缩
/// </summary>
/// <param name="text">文本</param>
public static string Compress(string text)
{
if (text=="")
return string.Empty;
byte[] buffer = Encoding.UTF8.GetBytes(text);
return Convert.ToBase64String(Compress(buffer));
} /// <summary>
/// 解压缩
/// </summary>
/// <param name="text">文本</param>
public static string Decompress(string text)
{
if (text=="")
return string.Empty;
byte[] buffer = Convert.FromBase64String(text);
using (var ms = new MemoryStream(buffer))
{
using (var zip = new GZipStream(ms, CompressionMode.Decompress))
{
using (var reader = new StreamReader(zip))
{
return reader.ReadToEnd();
}
}
}
} /// <summary>
/// 压缩
/// </summary>
/// <param name="buffer">字节流</param>
public static byte[] Compress(byte[] buffer)
{
if (buffer == null)
return null;
using (var ms = new MemoryStream())
{
using (var zip = new GZipStream(ms, CompressionMode.Compress, true))
{
zip.Write(buffer, , buffer.Length);
}
return ms.ToArray();
}
} /// <summary>
/// 解压缩
/// </summary>
/// <param name="buffer">字节流</param>
public static byte[] Decompress(byte[] buffer)
{
if (buffer == null)
return null;
return Decompress(new MemoryStream(buffer));
} /// <summary>
/// 压缩
/// </summary>
/// <param name="stream">流</param>
public static byte[] Compress(Stream stream)
{
if (stream == null || stream.Length == )
return null;
return Compress(StreamToBytes(stream));
} /// <summary>
/// 解压缩
/// </summary>
/// <param name="stream">流</param>
public static byte[] Decompress(Stream stream)
{
if (stream == null || stream.Length == )
return null;
using (var zip = new GZipStream(stream, CompressionMode.Decompress))
{
using (var reader = new StreamReader(zip))
{
return Encoding.UTF8.GetBytes(reader.ReadToEnd());
}
}
}
/// <summary>
/// 流转换为字节流
/// </summary>
/// <param name="stream">流</param>
public static byte[] StreamToBytes(Stream stream)
{
stream.Seek(, SeekOrigin.Begin);
var buffer = new byte[stream.Length];
stream.Read(buffer, , buffer.Length);
return buffer;
}
}
}

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. java学习——递归

    /** * 添加商品类型的功能 * 注意创建时间和修改时间在具体的方法中直接赋值 * @param gT 商品类型管理表映射的GT类的实例化对象 */ @Override public void ad ...

  2. XML fragments parsed from previous mappers already contains value for xxxxx

    错误信息: Caused by: org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file ...

  3. JPA:identifier of an instance of was altered from

    由于前台提交的对象,并没有关联对象的数据. 所以要把关联对象赋值一下,在合并集合. WmsOutboundreport entity2 = service.findOne(item.getOutbou ...

  4. Eclipse新建动态页面

    作为web小学生,写一下很多人问的基本基本基本问题 新建web项目 出现一下界面: 明明完成后一直点击next,但不要点击finish 知道出现这个界面(最后一个界面) 打上勾(用来自动生成web.x ...

  5. 如何对mRemoteNG在进行Linux终端访问时自定义配色

    Its not that easy to config mRemoteNG custom color themes, not like XShell which is really convinent ...

  6. Linux-yum只下载不安装

    通过yum命令只下载rpm包不安装 经常遇到服务器没有网络的情况下部署环境,或者创建自己的 yum 仓库等.每次都是在网上搜搜搜,都是五花八门,自己整理了下自己用到的以下三种方式,这里没有太多废话,只 ...

  7. php 两个数组,若键相同,则值合并

    <?php $arr1 = array('9' => '4.08', '10' => '0.10', '11' => '4.08', '12' => '0.01'); $ ...

  8. 关于bytes和bytearray

    背景 平时工作因为有批量线上数据进行更新,通过Python程序连接数据库,利用连接池和gevent的并发性能,处理大量数据. 因为数据方提供的数据表结构中带有varbinary类型字段,并非全部,所以 ...

  9. GWAS研究中case和control的比例是有讲究的?

    GWAS研究中,表型分两种.第一种是线性的表型,如果身高.体重.智力等:第二种是二元的表型,比如患病和未患病,即通常所说的case和control.对于表型是线性的样本来说,是不存在case和cont ...

  10. 关于 redis 的 数据类型 和 内存模型

    该文章 是在读了 公众号 : java 后端技术 之后 做的一个小记录 原文网址  : https://mp.weixin.qq.com/s/mI3nDtQdlVlLv2uUTxJegA 作者文章写的 ...