C#利用sharpziplib的方法浅析

C#语言有很多值得学习的地方,这里我们主要介绍C#利用sharpziplib,包括介绍压缩和解压缩的两个类,分别为 ZipClass和UnZipClass等方面。

创新互联公司服务电话:18982081108,为您提供成都网站建设网页设计及定制高端网站建设服务,创新互联公司网页制作领域十年,包括成都餐厅设计等多个方面拥有多年的网站推广经验,选择创新互联公司,为网站锦上添花!

在做项目的时候需要将文件进行压缩和解压缩,于是就从http://www.icsharpcode.net下载了关于压缩和解压缩的源码,但是下载下来后,面对这么多的代码,一时不知如何下手。只好耐下心来,慢慢的研究,总算找到了门路。针对自己的需要改写了文件压缩和解压缩的两个类,分别为 ZipClass和UnZipClass。其中碰到了不少困难,就决定写出来压缩和解压的程序后,一定把源码贴出来共享,让***接触压缩和解压缩的朋友可以少走些弯路。下面就来解释如何C#利用sharpziplib进行文件的压缩和解压缩。

首先需要在项目里C#利用sharpziplib.dll。然后修改其中的关于压缩和解压缩的类。实现源码如下:

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

网站题目:C#利用sharpziplib的方法浅析
标题网址:http://www.csdahua.cn/qtweb/news8/276208.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网