自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#利用sharpziplib的方法淺析

開發(fā) 后端
這里介紹C#利用sharpziplib,其中碰到了不少困難,就決定寫出來壓縮和解壓的程序后,一定把源碼貼出來共享,讓首次接觸壓縮和解壓縮的朋友可以少走些彎路。

C#語言有很多值得學(xué)習的地方,這里我們主要介紹C#利用sharpziplib,包括介紹壓縮和解壓縮的兩個類,分別為 ZipClass和UnZipClass等方面。

在做項目的時候需要將文件進行壓縮和解壓縮,于是就從http://www.icsharpcode.net下載了關(guān)于壓縮和解壓縮的源碼,但是下載下來后,面對這么多的代碼,一時不知如何下手。只好耐下心來,慢慢的研究,總算找到了門路。針對自己的需要改寫了文件壓縮和解壓縮的兩個類,分別為 ZipClass和UnZipClass。其中碰到了不少困難,就決定寫出來壓縮和解壓的程序后,一定把源碼貼出來共享,讓***接觸壓縮和解壓縮的朋友可以少走些彎路。下面就來解釋如何C#利用sharpziplib進行文件的壓縮和解壓縮。

首先需要在項目里C#利用sharpziplib.dll。然后修改其中的關(guān)于壓縮和解壓縮的類。實現(xiàn)源碼如下:

  1. /// <summary> 
  2. /// 壓縮文件  
  3. /// </summary> 
  4.  
  5. using System;  
  6. using System.IO;  
  7.  
  8. using ICSharpCode.SharpZipLib.Checksums;  
  9. using ICSharpCode.SharpZipLib.Zip;  
  10. using ICSharpCode.SharpZipLib.GZip;  
  11.  
  12. namespace Compression  
  13. {  
  14. public class ZipClass  
  15. {  
  16.  
  17. public void ZipFile(string FileToZip, string ZipedFile ,
    int CompressionLevel, int BlockSize)  
  18. {  
  19. //如果文件沒有找到,則報錯  
  20. if (! System.IO.File.Exists(FileToZip))  
  21. {  
  22. throw new System.IO.FileNotFoundException
    ("The specified file " + FileToZip + " could not be found. Zipping aborderd");  
  23. }  
  24.  
  25. system.io.filestream StreamToZip = new System.IO.FileStream
    (FileToZip,System.IO.FileMode.Open , System.IO.FileAccess.Read);  
  26. System.IO.FileStream ZipFile = System.IO.File.Create(ZipedFile);  
  27. ZipOutputStream ZipStream = new ZipOutputStream(ZipFile);  
  28. ZipEntry ZipEntry = new ZipEntry("ZippedFile");  
  29. ZipStream.PutNextEntry(ZipEntry);  
  30. ZipStream.SetLevel(CompressionLevel);  
  31. byte[] buffer = new byte[BlockSize];  
  32. System.Int32 size =StreamToZip.Read(buffer,0,buffer.Length);  
  33. ZipStream.Write(buffer,0,size);  
  34. try  
  35. {  
  36. while (size < StreamToZip.Length)  
  37. {  
  38. int sizeRead =StreamToZip.Read(buffer,0,buffer.Length);  
  39. ZipStream.Write(buffer,0,sizeRead);  
  40. size += sizeRead;  
  41. }  
  42. }  
  43. catch(System.Exception ex)  
  44. {  
  45. throw ex;  
  46. }  
  47. ZipStream.Finish();  
  48. ZipStream.Close();  
  49. StreamToZip.Close();  
  50. }  
  51.  
  52. public void ZipFileMain(string[] args)  
  53. {  
  54. string[] filenames = Directory.GetFiles(args[0]);  
  55.  
  56. crc32 crc = new Crc32();  
  57. ZipOutputStream s = new ZipOutputStream(File.Create(args[1]));  
  58.  
  59. s.setlevel(6); // 0 - store only to 9 - means best compression  
  60.  
  61. foreach (string file in filenames)  
  62. {  
  63. //打開壓縮文件  
  64. FileStream fs = File.OpenRead(file);  
  65.  
  66. byte[] buffer = new byte[fs.Length];  
  67. fs.Read(buffer, 0, buffer.Length);  
  68. ZipEntry entry = new ZipEntry(file);  
  69.  
  70. entry.datetime = DateTime.Now;  
  71.  
  72. // set Size and the crc, because the information  
  73. // about the size and crc should be stored in the header  
  74. // if it is not set it is automatically written in the footer.  
  75. // (in this case size == crc == -1 in the header)  
  76. // Some ZIP programs have problems with zip files that don't store  
  77. // the size and crc in the header.  
  78. entry.Size = fs.Length;  
  79. fs.Close();  
  80.  
  81. crc.reset();  
  82. crc.Update(buffer);  
  83.  
  84. entry.crc = crc.Value;  
  85.  
  86. s.putnextentry(entry);  
  87.  
  88. s.write(buffer, 0, buffer.Length);  
  89.  
  90. }  
  91.  
  92. s.finish();  
  93. s.Close();  
  94. }  
  95. }  
  96. }  

【編輯推薦】

  1. C#字符ASCII碼學(xué)習經(jīng)驗
  2. C#數(shù)值類型之間的轉(zhuǎn)換概述
  3. 日期型數(shù)據(jù)轉(zhuǎn)換成C#長整型數(shù)據(jù)
  4. C#查看Excel對象模型分析
  5. C#日期型數(shù)據(jù)簡單剖析
責任編輯:佚名 來源: 51CTO.com
相關(guān)推薦

2009-09-01 09:16:57

C#使用SharpZi

2009-08-20 16:15:19

C# 匿名方法

2009-08-10 17:36:17

C#擴展方法

2009-09-10 14:52:55

C# get

2009-09-11 09:15:06

C# get方法

2009-09-07 09:36:29

C# DisposeDispose方法

2009-08-17 17:56:32

C# 枚舉

2009-09-10 09:10:17

C# TextBox換

2009-09-07 09:53:01

C# DisposeDispose方法

2009-08-14 16:02:50

C#啟動windows

2009-09-18 10:58:31

C#數(shù)組操作

2009-08-12 17:27:11

C#讀取文件

2009-08-28 12:19:19

C#靜態(tài)方法

2009-08-20 10:53:23

C#操作內(nèi)存

2009-08-28 16:31:21

C# treeview

2009-09-11 09:20:00

C# button事件

2009-09-18 19:09:41

C# COM組件

2009-09-08 14:54:40

C# listBox控

2009-09-08 16:22:27

c# listBox

2009-09-15 15:40:25

C# 綁定
點贊
收藏

51CTO技術(shù)棧公眾號