C#将多个文件打包成.zip文件
来源:互联网 发布:优化的同义词 编辑:程序博客网 时间:2024/06/05 08:18
本文主要是介绍了下利用ICSharpCode.SharpZipLib.dll(官方下载地址:http://www.icsharpcode.net/opensource/sharpziplib/)这个程序集将windows文件进行打包。
下面给出ZipHelper.cs这个类全部代码,代码中只包含了对多个文件的打包(暂时不包括文件夹和解压功能)
using System;using System.Linq;using System.IO;using ICSharpCode.SharpZipLib.Zip;using ICSharpCode.SharpZipLib.Checksums;namespace WindowsFormsApplication1{ public class ZipHelper { /// <summary> /// 压缩多个文件 /// </summary> /// <param name="files">文件名</param> /// <param name="ZipedFileName">压缩包文件名</param> /// <param name="Password">解压码</param> /// <returns></returns> public static void Zip(string[] files, string ZipedFileName, string Password) { files = files.Where(f => File.Exists(f)).ToArray(); if (files.Length == 0) throw new FileNotFoundException("未找到指定打包的文件"); ZipOutputStream s = new ZipOutputStream(File.Create(ZipedFileName)); s.SetLevel(6); if (!string.IsNullOrEmpty(Password.Trim())) s.Password = Password.Trim(); ZipFileDictory(files, s); s.Finish(); s.Close(); } /// <summary> /// 压缩多个文件 /// </summary> /// <param name="files">文件名</param> /// <param name="ZipedFileName">压缩包文件名</param> /// <returns></returns> public static void Zip(string[] files, string ZipedFileName) { Zip(files, ZipedFileName, string.Empty); } private static void ZipFileDictory(string[] files, ZipOutputStream s) { ZipEntry entry = null; FileStream fs = null; Crc32 crc = new Crc32(); try { //创建当前文件夹 entry = new ZipEntry("/"); //加上 “/” 才会当成是文件夹创建 s.PutNextEntry(entry); s.Flush(); foreach (string file in files) { //打开压缩文件 fs = File.OpenRead(file); byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); entry = new ZipEntry("/" + Path.GetFileName(file)); entry.DateTime = DateTime.Now; entry.Size = fs.Length; fs.Close(); crc.Reset(); crc.Update(buffer); entry.Crc = crc.Value; s.PutNextEntry(entry); s.Write(buffer, 0, buffer.Length); } } finally { if (fs != null) { fs.Close(); fs = null; } if (entry != null) entry = null; GC.Collect(); } } }}
直接调用 ZipHelper.Zip(filepaths,zipedfilepath)即可。
注意: zipedfilepath的父级目录必须存在,否则在创建.zip文件时会报目录不存在错误。
- C#将多个文件打包成.zip文件
- java实现将多个文件打包成zip
- java将文件打包成zip文件
- 文件打包成zip类型文件
- 将文件打包成ZIP文件
- java 打包zip文件
- java 打包Zip文件
- zip打包单个文件
- JAVA文件打包ZIP
- 打包上传zip文件
- pclzip打包文件zip
- java 将多个文件打包成一个zip后进行下载
- 将文件打包成zip包
- java实现多文件打包成zip
- php将文件夹打包成zip文件
- php将文件夹打包成zip文件
- php将文件夹打包成zip文件
- C#打包文件夹成zip格式(包括文件夹和子文件夹下的所有文件)
- 关于消息推送
- 谈谈苦逼这件事
- C_INCLUDE_PATH,LIBRARY_PATH,LD_LIBRARY_PATH(转)
- 关于CSS的一些零碎的知识(css hack,图片与文字对齐)
- html 标签与 html 实体转换 与 php html 系列函数的简单使用
- C#将多个文件打包成.zip文件
- sql2005 如何导出作业的脚本?
- How To Become A Hacker——如何成为黑客
- 本地通知UILocalNotification
- 旧工程适配iOS 6和iPhone 5之第三方静态库
- 触发器其实很简单
- link with editor
- SQL Server 2005无日志文件附加数据库
- java源码中的不变模式