C#中使用SharpZipLib进行解压缩然后进行二进制反序列化
生活随笔
收集整理的這篇文章主要介紹了
C#中使用SharpZipLib进行解压缩然后进行二进制反序列化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
場景
C#中將list進行序列化并使用SharpZipLib進行壓縮:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/99940095
ICSharpCode.SharpZipLib.dll 下載:
https://download.csdn.net/download/badao_liumang_qizhi/11586902
實現
在上面文章的基礎上,將壓縮好的文件進行解壓縮并將其進行二進制反序列化。
Winform窗體上拖拽按鈕,雙擊進入其點擊事件。
private void button9_Click(object sender, EventArgs e){DateTime begin = DateTime.Now;Console.WriteLine("解壓縮并二進制反序列化開始" + begin.ToString("yyyy-MM-dd HH:mm:ss"));try{int bufferSize = 40960;//打開文件FileStream fs = File.OpenRead(@"E:\testdata1\Record3.zip");//設置文件流的位置fs.Position = 0;//通過ZIpInputStream得到zip文件的對象???????????????????????????????????????????ZipInputStream zipInputStream = new ZipInputStream(fs, bufferSize);//通過zip.getNextEntry()來得到ZipEntry對象zipInputStream.GetNextEntry();//定義數據緩沖byte[] buffer = new byte[bufferSize];//定義讀取位置???????????????????????int offset = 0;//定義內存流????????????????????????????????????MemoryStream ms = new? MemoryStream();?????????????????????while ((offset = zipInputStream.Read(buffer, 0, buffer.Length)) != 0){//解壓后的數據寫入內存流ms.Write(buffer, 0, offset);?????????????????????????????????????????????}//設置內存流的位置ms.Position = 0;//反序列化BinaryFormatter formatter = new BinaryFormatter();this.personList = formatter.Deserialize(ms) as List<Person>;?????????????????????ms.Close();ms.Dispose();//關閉流fs.Close();//釋放對象????????????????fs.Dispose();?????????????????????????????????????????????????????????????}catch (Exception ex){Console.WriteLine(ex.Message);}DateTime end = DateTime.Now;TimeSpan ts = end - begin;Console.WriteLine("解壓縮并使用二進制反序列化結束" + end.ToString("yyyy-MM-dd HH:mm:ss"));Console.WriteLine("共花費" + ts.TotalSeconds);foreach(Person p in personList){Console.WriteLine("Id:"+p.Id+"密碼:"+p.Password);}}運行效果
?
總結
以上是生活随笔為你收集整理的C#中使用SharpZipLib进行解压缩然后进行二进制反序列化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#中将list使用ProtoBuf进行
- 下一篇: C#中使用SharpZipLib进行解压