zip (ICSharpCode.SharpZipLib.dll文件需要下载)

2018-06-22 06:43:02来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

ZipClass zc=new ZipClass ();
zc.ZipDir(@"E:\1\新建文件夹", @"E:\1\新建文件夹.zip", 1);//压缩
zc.UnZip(@"E:\1\新建文件夹.zip",@"E:\1\2222");//解压

  cs

 1 class ZipClass
 2 {
 3 public void UnZip(string zipFilePath, string unZipDir)
 4 {
 5 if (zipFilePath == string.Empty)
 6 {
 7 throw new Exception("压缩文件不能为空!");
 8 }
 9 if (!File.Exists(zipFilePath))
10 {
11 throw new System.IO.FileNotFoundException("压缩文件不存在!");
12 }
13 //解压文件夹为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹 
14 if (unZipDir == string.Empty)
15 unZipDir = zipFilePath.Replace(Path.GetFileName(zipFilePath), Path.GetFileNameWithoutExtension(zipFilePath));
16 if (!unZipDir.EndsWith("//"))
17 unZipDir += "//";
18 if (!Directory.Exists(unZipDir))
19 Directory.CreateDirectory(unZipDir);
20 
21 using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFilePath)))
22 {
23 
24 ZipEntry theEntry;
25 while ((theEntry = s.GetNextEntry()) != null)
26 {
27 string directoryName = Path.GetDirectoryName(theEntry.Name);
28 string fileName = Path.GetFileName(theEntry.Name);
29 if (directoryName.Length > 0)
30 {
31 Directory.CreateDirectory(unZipDir + directoryName);
32 }
33 if (!directoryName.EndsWith("//"))
34 directoryName += "//";
35 if (fileName != String.Empty)
36 {
37 using (FileStream streamWriter = File.Create(unZipDir + theEntry.Name))
38 {
39 
40 int size = 2048;
41 byte[] data = new byte[2048];
42 while (true)
43 {
44 size = s.Read(data, 0, data.Length);
45 if (size > 0)
46 {
47 streamWriter.Write(data, 0, size);
48 }
49 else
50 {
51 break;
52 }
53 }
54 }
55 }
56 }
57 }
58 }
59 
60  
61 
62 public static void ZipDir(string sDir, string sZip, ZipOutputStream s)
63 {
64 string[] filenames = Directory.GetFiles(sDir);
65 string[] dirnames = Directory.GetDirectories(sDir);
66 Crc32 crc = new Crc32();
67 if (s == null)
68 {
69 s = new ZipOutputStream(File.Create(sZip));
70 s.SetLevel(6); // 0 - store only to 9 - means best compression
71 }
72 
73 
74 foreach (string file in filenames)
75 fileZipInStream(file, s);
76 
77 foreach (string dir in dirnames)
78 ZipDir(dir, "", s);
79 if (sZip != "")
80 {
81 s.Finish();
82 s.Close();
83 
84 FileInfo fInfo = new FileInfo(sZip);
85 long size = fInfo.Length;
86 //Log.WriteLogD("----------------" + size.ToString());
87 if (size < 100) 
88 File.Delete(sZip);
89 }
90 }
91 
92 }
View Code

ICSharpCode.SharpZipLib.dll下载地址:http://i.cnblogs.com/Files.aspx

感谢提供此类的朋友

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:重构:用Command替换条件调度程序

下一篇:【原创】基于Bootstrap的Modal二次封装