栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用C#压缩/解压缩字符串

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用C#压缩/解压缩字符串

压缩/解压缩字符串的代码

public static void CopyTo(Stream src, Stream dest) {    byte[] bytes = new byte[4096];    int cnt;    while ((cnt = src.Read(bytes, 0, bytes.Length)) != 0) {        dest.Write(bytes, 0, cnt);    }}public static byte[] Zip(string str) {    var bytes = Encoding.UTF8.GetBytes(str);    using (var msi = new MemoryStream(bytes))    using (var mso = new MemoryStream()) {        using (var gs = new GZipStream(mso, CompressionMode.Compress)) { //msi.CopyTo(gs); CopyTo(msi, gs);        }        return mso.ToArray();    }}public static string Unzip(byte[] bytes) {    using (var msi = new MemoryStream(bytes))    using (var mso = new MemoryStream()) {        using (var gs = new GZipStream(msi, CompressionMode.Decompress)) { //gs.CopyTo(mso); CopyTo(gs, mso);        }        return Encoding.UTF8.GetString(mso.ToArray());    }}static void Main(string[] args) {    byte[] r1 = Zip("StringStringStringStringStringStringStringStringStringStringStringStringStringString");    string r2 = Unzip(r1);}

请记住,

Zip
返回
byte[]
,而
Unzip
返回
string
。如果您想要一个字符串,
Zip
可以对它进行base64编码(例如,使用
Convert.Tobase64String(r1)
)(结果
Zip
是非常二进制的!则不能将其打印到屏幕上或直接以XML编写)

建议的版本适用于.NET 2.0,适用于.NET 4.0使用

MemoryStream.CopyTo

重要说明:

GZipStream
知道压缩内容具有所有输入之前(即,有效压缩它需要所有数据),才能将压缩内容写入输出流。在检查输出流(例如)之前,需要确保您
Dispose()
的身份。这是通过上面的块完成的。请注意,是最里面的块,并且可以在其外部访问内容。这同样适用于解压缩:在中尝试访问之前的数据。
GZipStream``mso.ToArray()``using(){ }``GZipStream``Dispose()``GZipStream



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/392892.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号