C# 產生Zip檔
假設資料夾DOC中有N個資料 (.docx檔) 要加他們全部加入壓縮
//var zipService = new Ionic.Zip.ZipFile();
// 2017/1/3 補充更新: 當壓縮檔內檔名有中文時,如果沒指定編碼中文會亂碼
ZipFile zipFile= new ZipFile(System.Text.Encoding.Default) ;
//取出所有資料夾內的Word檔的FileInfo
string pDir = HttpContext.Current.Server.MapPath("~/Doc");
System.IO.DirectoryInfo fDir = new System.IO.DirectoryInfo(pDir);
var files = fDir.GetFiles("*.zip");
foreach(FileInfo fi in files){
if (fi.Exists)
{
using (var fstream = fi.Open(FileMode.Open))
{
//將檔案讀到記憶體存在一個Byte陣列
var ary = new byte[fstream.Length];
fstream.Read(ary, 0, fstream.Length);
zipService.AddEntry(fi.FullName, ary); //加入壓縮檔 AddEnrty也可以傳入Stream 但因為下面做了檔案刪除 無法這樣做
}
fi.Delete();
}
zipService.Save(Server.MapPath(string.Format("~\\doc\\{0}", "output.Zip"))); //儲存一個檔案 output.zip 完成
}