阐述VS2003压缩代码的有关常识

昨天到今天搞了一整天的VS2003压缩代码,我都快崩溃了! 一看到那些代码,脑袋顿时就像爆炸一样,所以有了许多的问题出现,还好,我一个个把他记录下来了,同时,在相关论坛上找了一些相关的解决办法,分享一下,供大家相互学习交流

1、首先从这里下载0.84版本的VS2003压缩代码及示例码。

2、下载下来之后你发现它没有VS2003的解决方案文件,没有关系。你可以自己建立,首先新建一个ZipUnzip的解决方案,然后,将上面经过解压缩之后的所有文件及目录COPY到你的解决方案所在的目录下。 #t#

3、在VS2003解决方案资源管理器(一般是在右上方中部点的位置)中点击显示所有文件按钮,然后可以见到很多“虚”的图标、文件及文件夹等,可以一次选择它们,然后包含进项目中。

4、编译,***使用Release选项,编译完成之后你可以在\bin\Release\看到ZipUnzip.dll的类了。如果你编译时报错,说什么AssemblyKeyFile之类的,你可以使用强命名工具新建一个,也可以将AssemblyInfo.cs中[assembly: AssemblyKeyFile("。。。。。")]改成:[assembly: AssemblyKeyFile("")] (不推荐这样做)。

5、新建一个WEBFORM项目,添加ZipUnzip.dll类的引用,然后添加如下文件及内容:

 
 
  1. using System;
  2. using System.IO;
  3. using ICSharpCode.SharpZipLib.Zip;
  4. using ICSharpCode.SharpZipLib.GZip;
  5. using ICSharpCode.SharpZipLib.BZip2;
  6. using ICSharpCode.SharpZipLib.Checksums;
  7. using ICSharpCode.SharpZipLib.Zip.Compression;
  8. using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
  9. namespace WebZipUnzip
  10. {
  11.  public class AttachmentUnZip
  12.  {
  13. public AttachmentUnZip()
  14. {}
  15. public static void UpZip(string zipFile)
  16. {
  17. string []FileProperties=new string[2];
  18. FileProperties[0]=zipFile;//待解压的文件
  19. FileProperties[1]=zipFile.Substring(0,zipFile.LastIndexOf("\\")+1);//解压后放置的目标目录
  20. UnZipClass UnZc=new UnZipClass();
  21. UnZc.UnZip(FileProperties);
  22. }
  23.  }
  24. }
  25. // ---------------------------------------------
  26. // 2. UnZipClass.cs
  27. // ---------------------------------------------
  28. using System;
  29. using System.IO;
  30. using ICSharpCode.SharpZipLib.Zip;
  31. using ICSharpCode.SharpZipLib.GZip;
  32. using ICSharpCode.SharpZipLib.BZip2;
  33. using ICSharpCode.SharpZipLib.Checksums;
  34. using ICSharpCode.SharpZipLib.Zip.Compression;
  35. using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
  36. namespace WebZipUnzip
  37. {
  38.  public class UnZipClass
  39.  { 
  40. /// 
  41. /// 解压文件
  42. /// 
  43. /// 包含要解压的文件名和要解压到的目录名数组
  44. public void UnZip(string[] args)
  45. {
  46. ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]));
  47. try
  48.  ZipEntry theEntry;
  49.  while ((theEntry = s.GetNextEntry()) != null) 
  50.  { 
  51. string directoryName = Path.GetDirectoryName(args[1]);
  52. string fileName = Path.GetFileName(theEntry.Name);
  53. //生成解压目录
  54. Directory.CreateDirectory(directoryName);
  55. if (fileName != String.Empty) 
  56. //解压文件到指定的目录
  57. FileStream streamWriter = File.Create(args[1]+fileName);
  58. int size = 2048;
  59. byte[] data = new byte[2048];
  60. while (true) 
  61. {
  62.  ssize = s.Read(data, 0, data.Length);
  63.  if (size > 0) 
  64.  {
  65. streamWriter.Write(data, 0, size);
  66.  } 
  67.  else 
  68.  {
  69. break;
  70.  }
  71. }
  72. streamWriter.Close();
  73. }
  74.  }
  75.  s.Close();
  76. }
  77. catch(Exception eu)
  78. {
  79.  throw eu;
  80. }
  81. finally
  82. {
  83.  s.Close();
  84. }
  85. }//end UnZip
  86. public static bool UnZipFile(string file, string dir)
  87. {
  88. try
  89. {
  90.  if (!Directory.Exists(dir))
  91. Directory.CreateDirectory(dir);
  92. string fileFullName = Path.Combine(dir,file);
  93. ZipInputStream s = new ZipInputStream(File.OpenRead( fileFullName ));
  94.  
  95. ZipEntry theEntry;
  96. while ((theEntry = s.GetNextEntry()) != null)
  97. {
  98. string directoryName = Path.GetDirectoryName(theEntry.Name);
  99. string fileName = Path.GetFileName(theEntry.Name);
  100.  
  101. if (directoryName != String.Empty)
  102.  Directory.CreateDirectory( Path.Combine(dir, directoryName));
  103.  if (fileName != String.Empty)
  104.  {
  105. FileStream streamWriter = File.Create( Path.Combine(dir,theEntry.Name) );
  106. int size = 2048;
  107. byte[] data = new byte[2048];
  108. while (true)
  109. {
  110. ssize = s.Read(data, 0, data.Length);
  111. if (size > 0)
  112. {
  113.  streamWriter.Write(data, 0, size);
  114. }
  115. else
  116. {
  117.  break;
  118. }
  119. }
  120. streamWriter.Close();
  121.  }
  122. }
  123. s.Close();
  124. return true;
  125. }
  126. catch (Exception)
  127. {
  128. throw;
  129. }
  130.  }
  131. }//end UnZipClass
  132. }

此方案解决了文件名中文字的问题,目录VS2003压缩代码问题,至于整个文件夹批量上传并压缩成一个WINZIP压缩包的问题,没有时间解决了,各位如有解决方案,不妨共享一下。

文章名称:阐述VS2003压缩代码的有关常识
本文地址:http://www.shufengxianlan.com/qtweb/news37/454287.html

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

广告

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