专栏首页林德熙的博客dotnet 使用 GZipStream 压缩字符串

dotnet 使用 GZipStream 压缩字符串

在 dotnet 提供了 GZipStream 进行方便的 Stream 压缩,可以用这个方法压缩字符串

先拿到字符串,然后使用 Encoding.UTF8 转换为 byte 数组,写入到压缩

            var byteList = Encoding.UTF8.GetBytes(str);

上面的 str 就是传入的需要压缩的字符串

使用 GZipStream 需要先传入存放压缩的 Stream 可以创建内存 Stream 等

            var memoryStream = new MemoryStream();
            var gZipStream = new GZipStream(memoryStream, CompressionMode.Compress);

通过修改 CompressionMode.Compress 就可以设置为压缩或解压缩

对 gZipStream 写入内容,写入完成之后关闭,就会自动将写入的内容压缩

            var gZipStream = new GZipStream(memoryStream, CompressionMode.Compress);
            var byteList = Encoding.UTF8.GetBytes(str);
            gZipStream.Write(byteList, 0, byteList.Length);
            gZipStream.Close();

获取压缩后的数据可以通过 memoryStream.ToArray 方法

全部代码

            var str = "123123123123123123123123123123123123";
            var memoryStream = new MemoryStream();
            var gZipStream = new GZipStream(memoryStream, CompressionMode.Compress);
            var byteList = Encoding.UTF8.GetBytes(str);
            gZipStream.Write(byteList, 0, byteList.Length);
            gZipStream.Close();
            var output = memoryStream.ToArray();

解压缩可以在获取到 byte[] 转换为 MemoryStream 然后通过 GZipStream 读取

            var memoryStream = new MemoryStream(xx);
            var gZipStream = new GZipStream(memoryStream, CompressionMode.Decompress);

可以通过 BinaryReader 辅助读取

            var binaryReader = new BinaryReader(gZipStream, Encoding.UTF8);
            str = Encoding.UTF8.GetString(binaryReader.ReadBytes(10000));

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • win10 uwp 使用 asp dotnet core 做图床服务器客户端 服务器端客户端

    本文告诉大家如何在 UWP 做客户端和 asp dotnet core 做服务器端来做一个图床工具

    林德熙
  • win10 uwp 气泡 WPF 气泡

    假设尖头宽度 10 高度 5 ,那么可以看到第一个点是 (0,5) 第二个点是 (5,0) 第三个点是 (10,5)

    林德熙
  • win10 uwp 活动磁贴

    本文翻译:https://mobileprogrammerblog.wordpress.com/2015/12/23/live-tiles-and-notifi...

    林德熙
  • Flutter TextStyle参数解析关于学习

    吴老师
  • geotools中等值面的生成与OL3中的展示

    本文讲述如何在geotools中IDW插值生成等值面,并根据给定shp进行裁剪,并生成geojson数据,以及Openlayers3中展示。

    lzugis
  • Appium系列|Appium测试框架搭建(二)

    上一个小节已经创建了三个Page类,每个应用里会有很多个Page类,Page类多的话要获取到需要的Page类就比较麻烦,这时候可以新建一个用来管理各个page类...

    测试邦
  • win10 uwp 使用 asp dotnet core 做图床服务器客户端 服务器端客户端

    本文告诉大家如何在 UWP 做客户端和 asp dotnet core 做服务器端来做一个图床工具

    林德熙
  • Three.js教程(5):光源

    Three.js的作用就是做3D效果,一说到3D就绕不过一个话题,那就是阴影。而要出现阴影的效果,那么就要涉及光源。本章介绍Three.js中光源相关的知识。

    kai666666
  • 可视化工具solo show-----Prefuse自带例子GraphView讲解

      2014.10.15日以来的一个月,挤破了头、跑断了腿、伤透了心、吃够了全国最大餐饮连锁店——沙县小吃。其中酸甜苦辣,绝不是三言两语能够说得清道的明的。校招...

    JackieZheng
  • Unity 随机地图房间通道生成

    https://www.cnblogs.com/koshio0219/p/12604383.html

    汐夜koshio

扫码关注云+社区

领取腾讯云代金券