C# DotNetZip壓縮單、多檔案以及檔案夾

來源:互聯網
上載者:User

標籤:dotnetzip壓縮   c#壓縮檔   c#壓縮多個檔案   dotnetzip   壓縮中文亂碼   

有些項目為了更好的使用者體驗,會把下載檔案做成一個壓縮的檔案,直接下載,免得去一個個的點擊下載檔案。網上有很多壓縮檔的方法,也有第三方的分裝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加上第二個參數即可去掉多層的檔案夾。


        #region bool SaveFile(string filePath, byte[] bytes) 檔案儲存,        /// <summary>        ///  檔案儲存,特別是有些檔案放到資料庫,可以直接從資料取二進位,然後儲存到指定檔案夾        /// </summary>        /// <param name="filePath">儲存檔案地址</param>        /// <param name="bytes">檔案二進位</param>        /// <returns></returns>        public static bool SaveFile(string filePath, byte[] bytes)        {            bool result = true;            try            {                using (var fileStream = new FileStream(filePath, FileMode.Create))                {                    fileStream.Write(bytes, 0, bytes.Length);                }            }            catch (Exception)            {                result = false;            }            return result;        }        #endregion        #region 判斷檔案夾是否存在        /// <summary>        /// 判斷檔案夾是否存在        /// </summary>        /// <param name="path">檔案夾地址</param>        /// <returns></returns>        public static bool directoryExist(string path)        {            if (!string.IsNullOrEmpty(path) && Directory.Exists(path))            {                return true;            }            return false;        }         #endregion        #region 建立檔案夾        /// <summary>        /// 建立檔案夾        /// </summary>        /// <param name="path">檔案地址</param>        /// <returns></returns>        public static bool directoryAdd(string path)        {            if (!string.IsNullOrEmpty(path) && !Directory.Exists(path))            {                Directory.CreateDirectory(path); //建立檔案夾                  return true;            }            return false;        }         #endregion        #region 擷取壓縮後的檔案路徑        /// <summary>        /// 擷取壓縮後的檔案路徑        /// </summary>        /// <param name="dirPath">壓縮的檔案路徑</param>        /// <param name="filesPath">多個檔案路徑</param>        /// <returns></returns>        public static string GetCompressPath(string dirPath, List<string> filesPath)        {            var zipPath = "";//返回壓縮後的檔案路徑            using (ZipFile zip = new ZipFile(System.Text.Encoding.Default)) //System.Text.Encoding.Default設定中文附件名稱亂碼,不設定會出現亂碼            {                foreach (var file in filesPath)                {                    zip.AddFile(file,"");    //第二個參數為空白,說明壓縮的檔案不會存在多層檔案夾。比如C:\test\a\b\c.doc 壓縮後解壓檔案會出現c.doc    //如果改成zip.AddFile(file);則會出現多層檔案夾壓縮,比如C:\test\a\b\c.doc 壓縮後解壓檔案會出現test\a\b\c.doc                }                zipPath = string.Format("{0}\\{1}.zip", dirPath, DateTime.Now.ToString("yyyyMMddHHmmss"));                zip.Save(zipPath);            }            return zipPath;        }         #endregion

調用:


                 List<string> filesPath = new List<string>(); filesPath.Add(“C:/test/a.doc”); filesPath.Add(“C:/test/b.doc”); //filesPath.Add(Server.MapPath("~/text/Files/c.doc"));//可以設定添加虛擬路徑  var dirPath="Server.MapPath("~/compress/")"; var filePath=GetCompressPath(dirPath,filesPath);//返回壓縮的檔案








C# DotNetZip壓縮單、多檔案以及檔案夾

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.