C# DotNetZip压缩单、多文件以及文件夹

摘要:
网上有很多压缩文件的方法,也有第三方的分装DLL文件,本文主要介绍DotNetZip压缩方法。DotNetZip的DLl下载地址:http://download.csdn.net/detail/lilinoscar/8295255官网下载地址:http://dotnetzip.codeplex.com/解决DotNetZip压缩中文名称乱码,只需要在实例化时设置编码:System.Text.Encoding.Default即:ZipFilezip=newZipFile。解决DotNetZip压缩后的文件有多层目录:zip.AddFile;AddFile加上第二个参数即可去掉多层的文件夹。string.IsNullOrEmpty&&Directory.Exists){returntrue;}returnfalse;}#endregion#region创建文件夹//////创建文件夹//////文件地址///publicstaticbooldirectoryAdd{if(!

有些项目为了更好的用户体验,会把下载文件做成一个压缩的文件,直接下载,免得去一个个的点击下载文件。网上有很多压缩文件的方法,也有第三方的分装DLL文件,本文主要介绍DotNetZip压缩方法。

DotNetZip的DLl下载地址:http://download.csdn.net/detail/lilinoscar/8295255

官网下载地址:http://dotnetzip.codeplex.com/

解决DotNetZip压缩中文名称乱码,只需要在实例化时设置编码:System.Text.Encoding.Default

即:ZipFile zip = new ZipFile(System.Text.Encoding.Default)。

解决DotNetZip压缩后的文件有多层目录:zip.AddFile(file,"");

AddFile加上第二个参数即可去掉多层的文件夹。

  1. #regionboolSaveFile(stringfilePath,byte[]bytes)文件保存,
  2. ///<summary>
  3. ///文件保存,特别是有些文件放到数据库,可以直接从数据取二进制,然后保存到指定文件夹
  4. ///</summary>
  5. ///<paramname="filePath">保存文件地址</param>
  6. ///<paramname="bytes">文件二进制</param>
  7. ///<returns></returns>
  8. publicstaticboolSaveFile(stringfilePath,byte[]bytes)
  9. {
  10. boolresult=true;
  11. try
  12. {
  13. using(varfileStream=newFileStream(filePath,FileMode.Create))
  14. {
  15. fileStream.Write(bytes,0,bytes.Length);
  16. }
  17. }
  18. catch(Exception)
  19. {
  20. result=false;
  21. }
  22. returnresult;
  23. }
  24. #endregion
  25. #region判断文件夹是否存在
  26. ///<summary>
  27. ///判断文件夹是否存在
  28. ///</summary>
  29. ///<paramname="path">文件夹地址</param>
  30. ///<returns></returns>
  31. publicstaticbooldirectoryExist(stringpath)
  32. {
  33. if(!string.IsNullOrEmpty(path)&&Directory.Exists(path))
  34. {
  35. returntrue;
  36. }
  37. returnfalse;
  38. }
  39. #endregion
  40. #region创建文件夹
  41. ///<summary>
  42. ///创建文件夹
  43. ///</summary>
  44. ///<paramname="path">文件地址</param>
  45. ///<returns></returns>
  46. publicstaticbooldirectoryAdd(stringpath)
  47. {
  48. if(!string.IsNullOrEmpty(path)&&!Directory.Exists(path))
  49. {
  50. Directory.CreateDirectory(path);//新建文件夹
  51. returntrue;
  52. }
  53. returnfalse;
  54. }
  55. #endregion
  56. #region获取压缩后的文件路径
  57. ///<summary>
  58. ///获取压缩后的文件路径
  59. ///</summary>
  60. ///<paramname="dirPath">压缩的文件路径</param>
  61. ///<paramname="filesPath">多个文件路径</param>
  62. ///<returns></returns>
  63. publicstaticstringGetCompressPath(stringdirPath,List<string>filesPath)
  64. {
  65. varzipPath="";//返回压缩后的文件路径
  66. using(ZipFilezip=newZipFile(System.Text.Encoding.Default))//System.Text.Encoding.Default设置中文附件名称乱码,不设置会出现乱码
  67. {
  68. foreach(varfileinfilesPath)
  69. {
  70. zip.AddFile(file,"");
  71. //第二个参数为空,说明压缩的文件不会存在多层文件夹。比如C: estac.doc压缩后解压文件会出现c.doc
  72. //如果改成zip.AddFile(file);则会出现多层文件夹压缩,比如C: estac.doc压缩后解压文件会出现testac.doc
  73. }
  74. zipPath=string.Format("{0}\{1}.zip",dirPath,DateTime.Now.ToString("yyyyMMddHHmmss"));
  75. zip.Save(zipPath);
  76. }
  77. returnzipPath;
  78. }
  79. #endregion


调用:

    1. List<string>filesPath=newList<string>();
    2. filesPath.Add(“C:/test/a.doc”);
    3. filesPath.Add(“C:/test/b.doc”);
    4. //filesPath.Add(Server.MapPath("~/text/Files/c.doc"));//可以设置添加虚拟路径
    5. vardirPath="Server.MapPath("~/compress/")";
    6. varfilePath=GetCompressPath(dirPath,filesPath);//返回压缩的文件

免责声明:文章转载自《C# DotNetZip压缩单、多文件以及文件夹》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇项目管理系统 TAIGA 部署(转)Unity3D中移动物体位置的几种方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[Word] Word中保存出矢量图

word整个另存为html格式后,会出现一个xxxx.files文件夹,里面有.gif、.wmz、.xml、.emz等格式的文件。   1)通过.gif查看图片,查找你要保存的图片,假设名字为name.gif   2) 找到name.wmz文件,修改后缀.wmz为.zip,使用zip解压得到一个文件,该文件没有后缀,为其加入后缀.emf,此时得到你需要的矢...

7zip批量压缩,并批量改.jar

批量压缩.bat--要和将要压缩的文件在同一级目录下 for /d %%X in (*) do "D:Program Files7-Zip7z.exe" a "%%X.zip" ".\%%X*"     [技巧] a 添加文件到压缩档案。 7z a archive1.zip subdir :增加subdir文件夹下的所有的文件和子文件夹到archive...

Linux权限问题(2)-unzip引发的权限问题

背景:依然是上一个朋友,在用php调用unzip命令时,再次出现了权限被拒绝的问题. Notice:此处描述的问题,为使用php命令行执行php文件,因此进程属主为登录的用户,而不是nginx用户. 以root身份登录,给myuser的家目录设置读和执行的权限 Notice:cd到一个目录,需要对该目录具有执行权限,否则会出现权限被拒绝的提示. # chm...

攻防世界-crypto-你猜猜(常用文件的文件头、Ziperello爆破压缩包密码)

题目来源: ISCC-2017题目描述:我们刚刚拦截了,敌军的文件传输获取一份机密文件,请君速速破解。 下载附件后,内容如下: 504B03040A0001080000626D0A49F4B5091F1E0000001200000008000000666C61672E7478746C9F170D35D0A45826A03E161FB96870EDDFC7C...

Linux /python --- zipinfo命令

Linux zipinfo命令用于列出压缩文件信息。 执行zipinfo指令可得知zip压缩文件的详细信息。 zipinfo [-12hlmMstTvz][压缩文件][文件...][-x <范本样式>] 参数: -1 只列出文件名称。 -2 此参数的效果和指定"-1"参数类似,但可搭配"-h","-t"和"-z"参数使用。 -h 只列出压缩文...

iOS zipzap读取压缩文件

最近在公司遇到一项需求,在不解压zip文件的情况下读取其中的文件,因为之前使用的ziparchive不能满足现在的需求,所以在网上一阵狂搜,终于找到了zipzap,实话说还真的难找。 之前读取本地zip文件的内容时会把它解压出来,运行app之后会发现原来的zip文件被同名文件夹取代,使用zipzap之后便不会再有这种情况,另外自己还可以根据需要把读取的文件...