C#使用iCSharpcode进行文件压缩实现方法
本文所述为一个C#使用iCSharpcode压缩的使用类,经测试效果不错。分享给大家供大家参考之用。具体方法如下:
1.参数类
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; namespaceZipCompress { publicclassZipParameter { privatestringzip_Name=""; privatestringzip_DirectoryName=""; privateList<string>zip_FileList=newList<string>(); ///<summary> ///压缩后的文件名称 ///</summary> publicstringZIPName { get{returnzip_Name;} set{zip_Name=value;} } ///<summary> ///压缩的文件路径 ///</summary> publicstringZIPDirectoryName { get{returnzip_DirectoryName;} set{zip_DirectoryName=value;} } ///<summary> ///压缩的文件列表 ///</summary> publicList<string>ZIPFileList { get{returnzip_FileList;} set{zip_FileList=value;} } } }
2.工作类
//**************************************************************************************** //功能:实现文件压缩 //使用方法:设置参数进行压缩 //***************************************************************************************** usingSystem; usingICSharpCode.SharpZipLib.Zip; usingSystem.IO; usingSystem.Text; namespaceZipCompress { publicclassCompressFile { ///<summary> ///压缩文件参数 ///</summary> publicZipParameterZipParameter{get;set;} ///<summary> ///压缩文件返回压缩后的信息 ///</summary> ///<returns>string返回压缩后的提示信息</returns> publicstringCompressReturnMsg() { FileStreamZip_File; ZipOutputStreamZipStream; ZipEntryZipEntry; stringrtnMessage="";//返回的信息 try { //循环文件,如果文件不存在就不添加的压缩里面 for(inti=0;i<ZipParameter.ZIPFileList.Count;i++) { if(!File.Exists(ZipParameter.ZIPFileList[i])) { ZipParameter.ZIPFileList.RemoveAt(i); i--; } } //没有有文件下面的压缩不执行 if(ZipParameter.ZIPFileList.Count==0) { return"filenotfind"; } //没有目录进行创建 if(!Directory.Exists(ZipParameter.ZIPDirectoryName)) { Directory.CreateDirectory(ZipParameter.ZIPDirectoryName); } //解决文档名称乱码问题,出现乱码就是因为CodePage不对 Encodinggbk=Encoding.GetEncoding("gbk"); ICSharpCode.SharpZipLib.Zip.ZipConstants.DefaultCodePage=gbk.CodePage; //文件路径,文档路径与文件名称 stringstrPath=ZipParameter.ZIPDirectoryName+ZipParameter.ZIPName; Zip_File=File.Create(strPath); ZipStream=newZipOutputStream(Zip_File); foreach(stringFileToZipinZipParameter.ZIPFileList) { Zip_File=File.OpenRead(FileToZip); byte[]buffer=newbyte[Zip_File.Length]; Zip_File.Read(buffer,0,buffer.Length); Zip_File.Close(); ZipEntry=newZipEntry(Path.GetFileName(FileToZip)); ZipStream.PutNextEntry(ZipEntry); ZipStream.Write(buffer,0,buffer.Length); } ZipStream.Finish(); ZipStream.Close(); Zip_File.Close(); rtnMessage="success"; } catch(Exceptionex) { rtnMessage="fail:"+ex.Message; } finally { GC.Collect(); GC.Collect(1); } returnrtnMessage; } } }
3.使用类
ZipParameterzp=newZipParameter(); zp.ZIPDirectoryName=@"C:\Users\Public\Pictures\SamplePictures\"; zp.ZIPName="Test.zip"; zp.ZIPFileList.Add(@"C:\Users\Public\Pictures\SamplePictures\Chrysanthemum.jpg"); zp.ZIPFileList.Add(@"C:\Users\Public\Pictures\SamplePictures\Desert.jpg"); zp.ZIPFileList.Add(@"C:\Users\Public\Pictures\SamplePictures\错误文件.jpg"); CompressFilecprFile=newCompressFile(); cprFile.ZipParameter=zp; stringstrMessage=cprFile.CompressReturnMsg();
4.文件源码点此本站下载
希望本文所述对大家的C#程序设计有所帮助。