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#程序设计有所帮助。