鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > .net技术 > c#编程 > >

C#中文件压缩及解压操作

来源:互联网 作者:佚名 时间:2012-11-07 23:49
新手一枚,这是我的处女作,希望大家觉得不好的地方提出来一起讨论讨论。 首先要用到一个外部组件,大家可以到 这里下载 我也找了很多类似的资料,把它们综合了一下,更人性化了些大家拿去直接可以使用。 -------------------------------------------压缩类

新手一枚,这是我的处女作,希望大家觉得不好的地方提出来一起讨论讨论。

首先要用到一个外部组件,大家可以到这里下载

我也找了很多类似的资料,把它们综合了一下,更人性化了些大家拿去直接可以使用。


-------------------------------------------压缩类---------------------------------------------------

 

1 using System; 2 using System.IO; 3 using ICSharpCode.SharpZipLib.Checksums; 4 using ICSharpCode.SharpZipLib.Zip; 5 using ICSharpCode.SharpZipLib.GZip; ZipFile 8 { 压缩文件 ZipHelp 13 { ZipName { get; set; } 压缩文件夹 ZipFileMain(string zipSourcePath,string zipToFilePath) 21 { 22 string[] filenames = Directory.GetFiles(zipSourcePath); )+1); Crc32 crc = new Crc32(); :zipToFilePath)); 27 28 s.SetLevel(6); // 设置压缩级别 AddDirToDir(crc, s,zipSourcePath); 31 32 s.Finish(); 33 s.Close(); 34 } 压缩单个文件 ZipByFile(string zipSourcePath,string zipToFilePath) 41 { Crc32 crc = new Crc32(); ) + ) - (zipSourcePath.LastIndexOf() + ; ))++ dirName:zipToFilePath)); AddFileToDir(crc,s,zipSourcePath,0); 48 s.Finish(); 49 s.Close(); 50 } 压缩单个文件到指定压缩文件夹下(内部调用) AddFileToDir(Crc32 crc,ZipOutputStream s,string file,int dotype) 58 { 59 FileStream fs = File.OpenRead(file); [fs.Length]; 61 fs.Read(buffer, 0, buffer.Length); 62 string filename=""; 63 if (dotype == 0) ) + 1); filename = file.Substring(file.IndexOf(ZipName)); 67 ZipEntry entry = new ZipEntry(filename); 68 entry.DateTime = DateTime.Now; 69 entry.Size = fs.Length; 70 fs.Close(); 71 crc.Reset(); 72 crc.Update(buffer); 73 entry.Crc = crc.Value; 74 s.PutNextEntry(entry); 75 s.Write(buffer, 0, buffer.Length); 76 } 递归文件夹层级(内部调用) AddDirToDir(Crc32 crc, ZipOutputStream s, string file) 84 { [] files = Directory.GetFiles(file); 87 foreach (string i in files) 88 { 89 AddFileToDir(crc,s,i,1); 90 } [] dirs=Directory.GetDirectories(file); 93 foreach (string i in dirs) 94 { 95 AddDirToDir(crc,s,i); 96 } 97 } 98 } 99 }

网友评论
<