日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用GZipStream实现压缩和解压缩

發(fā)布時(shí)間:2023/12/4 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用GZipStream实现压缩和解压缩 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

概述

之前做項(xiàng)目,涉及到存入到數(shù)據(jù)庫或者h(yuǎn)ttp傳輸?shù)臄?shù)據(jù)量比較大,這個(gè)時(shí)候,就需要考慮在存入數(shù)據(jù)庫或者發(fā)送傳輸之前,將數(shù)據(jù)壓縮下,當(dāng)從數(shù)據(jù)庫中取出時(shí),再解壓還原數(shù)據(jù)。特地找了下發(fā)現(xiàn)有GZipStream可以實(shí)現(xiàn)這個(gè)功能。此類表示gzip數(shù)據(jù)格式,該格式使用行業(yè)標(biāo)準(zhǔn)算法進(jìn)行無損文件壓縮和解壓縮。該格式包括用于檢測(cè)數(shù)據(jù)損壞的循環(huán)冗余校驗(yàn)值。gzip數(shù)據(jù)格式使用與DeflateStream類相同的算法,但可以擴(kuò)展為使用其他壓縮格式。該格式很容易以專利未涵蓋的方式實(shí)施。從.NET Framework 4.5開始,DeflateStream類使用zlib庫進(jìn)行壓縮。因此,與.NET Framework的早期版本相比,它提供了更好的壓縮算法,并且在大多數(shù)情況下,提供了較小的壓縮文件。

GZipStream使用的一般流程如下:

打開一個(gè)現(xiàn)有的文件

打開/創(chuàng)建輸出文件

創(chuàng)建GZipStream對(duì)象

逐字節(jié)讀源文件,并把它傳遞到GZipStream

使用GZipStream寫入到輸出文件流

代碼實(shí)現(xiàn)

1、壓縮字符串

?///?<summary>///?壓縮字串,回傳?Base64?結(jié)果///?</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;}

運(yùn)行結(jié)果測(cè)試,源文件經(jīng)過壓縮大小只有120字節(jié),而解壓后,源文件與解壓后txt的大小一致

總結(jié)

以上是生活随笔為你收集整理的使用GZipStream实现压缩和解压缩的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。