程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# DotNetZip壓縮單、多文件以及文件夾

C# DotNetZip壓縮單、多文件以及文件夾

編輯:C#入門知識

C# DotNetZip壓縮單、多文件以及文件夾


有些項目為了更好的用戶體驗,會把下載文件做成一個壓縮的文件,直接下載,免得去一個個的點擊下載文件。網上有很多壓縮文件的方法,也有第三方的分裝DLL文件,本文主要介紹DotNetZip壓縮方法。

解決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) 文件保存,
        /// 
        ///  文件保存,特別是有些文件放到數據庫,可以直接從數據取二進制,然後保存到指定文件夾
        /// 
        ///保存文件地址
        ///文件二進制
        /// www.Bkjia.com
        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 判斷文件夾是否存在
        /// 
        /// 判斷文件夾是否存在
        /// 
        ///文件夾地址
        /// 
        public static bool directoryExist(string path)
        {
            if (!string.IsNullOrEmpty(path) && Directory.Exists(path))
            {
                return true;
            }
            return false;
        } 
        #endregion

        #region 創建文件夾
        /// 
        /// 創建文件夾
        /// 
        ///文件地址
        /// 
        public static bool directoryAdd(string path)
        {
            if (!string.IsNullOrEmpty(path) && !Directory.Exists(path))
            {
                Directory.CreateDirectory(path); //新建文件夾  
                return true;
            }
            return false;
        } 
        #endregion

        #region 獲取壓縮後的文件路徑
        /// 
        /// 獲取壓縮後的文件路徑
        /// 
        ///壓縮的文件路徑
        ///多個文件路徑
        /// 
        public static string GetCompressPath(string dirPath, List 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:	estac.doc 壓縮後解壓文件會出現c.doc
		    //如果改成zip.AddFile(file);則會出現多層文件夾壓縮,比如C:	estac.doc 壓縮後解壓文件會出現testac.doc
                }
                zipPath = string.Format({0}\{1}.zip, dirPath, DateTime.Now.ToString(yyyyMMddHHmmss));
                zip.Save(zipPath);
            }
            return zipPath;
        } 
        #endregion

調用:

 

 

 

                 List filesPath = new List();
		 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);//返回壓縮的文件


 

 

 

 

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved