C# 文件複製幫助類

  作下對文件複製操做相關的筆記:spa

 

  

/// <summary>
    /// 文件幫助類
    /// </summary>
    public class FileHelper
    {
        /// <summary>
        /// 複製一個目錄下全部文件到一個新目錄下
        /// </summary>
        /// <param name="copyPath">原目錄</param>
        /// <param name="newFilePathFunc">新目錄生成方法</param>
        /// <param name="isCopySubFolder">是否複製子文件夾內的文件</param>
        /// <param name="isOverwrite">可選:是否覆蓋(默認覆蓋)</param>
        public static void CopyFileList(string copyPath, Func<string, string> newFilePathFunc, bool isCopySubFolder = true, bool isOverwrite = true)
        {
            //複製當前目錄下全部文件到新目錄中
            List<string> fileList = Directory.GetFiles(copyPath).ToList();

            foreach (var filePath in fileList)
            {
                string newFilePath = newFilePathFunc(filePath);
                string newFileDirectory = newFilePath.Substring(0, newFilePath.LastIndexOf('\\') + 1);
                if (!Directory.Exists(newFileDirectory))
                {
                    Directory.CreateDirectory(newFileDirectory);
                }

                if (isOverwrite || !File.Exists(newFilePath))
                {
                    File.Copy(filePath, newFilePath, isOverwrite);
                }

            }

            //複製子目錄下全部文件到新目錄中
            if (isCopySubFolder)
            {
                List<string> subFolderList = Directory.GetDirectories(copyPath).ToList();
                foreach (var subFolder in subFolderList)
                {
                    FileHelper.CopyFileList(subFolder, newFilePathFunc, isCopySubFolder, isOverwrite);
                }
            }

        }

        /// <summary>
        /// 複製一組文件到一個新目錄下
        /// </summary>
        /// <param name="filePathList">文件列表</param>
        /// <param name="newFilePathFunc">新目錄生成方法</param>
        /// <param name="isOverwrite">可選:是否覆蓋(默認覆蓋)</param>
        public static void CopyFileList(List<string> filePathList, Func<string, string> newFilePathFunc, bool isOverwrite = true)
        {
            //將上月保存未改變多幣種數據複製到本月中(本月已存在多幣種數據不覆蓋)
            foreach (var filePath in filePathList)
            {
                string newFilePath = newFilePathFunc(filePath);
                string newFileDirectory = newFilePath.Substring(0, newFilePath.LastIndexOf('\\') + 1);
                if (!Directory.Exists(newFileDirectory))
                {
                    Directory.CreateDirectory(newFileDirectory);
                }

                if (isOverwrite || !File.Exists(newFilePath))
                {
                    File.Copy(filePath, newFilePath, isOverwrite);
                }
            }
        }

    }
相關文章
相關標籤/搜索