【轉】[C#] 1行程式碼實現C#複製資料夾功能

z5337發表於2024-07-05

轉自:https://jhrs.com/2022/45307.html

做為一個C#開發人員,如遇到上傳檔案等功能時,時常會有C#複製資料夾的功能,通常都會用到System.IO名稱空間的類庫來進行檔案操作,前不久在編寫一個批次克隆git儲存庫的功能時,也遇到了類似的功能,來說說我是用了什麼樣的只有【1】行程式碼即實現了複製資料夾功能。

在開始正題之前,我們來回顧一下一些常見的寫法,順便提一下,利用本文提供的方法,你也可以實現C# 複製資料夾、C#重新命名資料夾、C#重新命名檔案、C#移動檔案、C#移動目錄的功能,統統只要一行程式碼。

C#複製資料夾所有內容(常規寫法)

下面是我們常見的透過迴圈複製資料夾裡面的內容到新目錄的程式碼,或許很多人都會這樣寫。

        /// <summary>
        /// 複製一個目錄(資料夾,https://jhrs.com 首發)到新目錄,如果目標目錄不存在則新建
        /// </summary>
        /// <param name="sourceDir">源目錄</param>
        /// <param name="destDir">目標目錄</param>
        private static void CopyFolder(string sourceDir, string destDir)
        {
            if (!Directory.Exists(destDir))
            {
                Directory.CreateDirectory(destDir);
            }
            try
            {
                string[] fileList = Directory.GetFiles(sourceDir, "*");
                foreach (string f in fileList)
                {
                    string fName = f.Substring(sourceDir.Length + 1);
                    File.Copy(Path.Combine(sourceDir, fName), Path.Combine(destDir, fName), true);
                }
            }
            catch (DirectoryNotFoundException dirNotFound)
            {
                throw new DirectoryNotFoundException(dirNotFound.Message);
            }
        }

那我們來看看只有1行C#程式碼就可實現複製資料夾的功能。在開始之前,請先新增引用:Microsoft.VisualBasic.FileIO,新增後,只需要這樣寫就可以了。需要說明的是,別以為看到是VB名稱空間的,就不能呼叫,實際上放心的呼叫即可。

using Microsoft.VisualBasic.FileIO;

//真實專案中,我也是呼叫的這個方法,只需要一行程式碼就可以實現複製目錄功能。
//效率是非常高的,尤其是複製GB級別大小的檔案(jhrs.com)。
FileSystem.CopyDirectory(sourceDir, destDir);

怎麼樣,是不是很簡單呢?

相關文章