C# 文件复制帮助类

  做下对文件复制操作相关的笔记:

 

  

/// 
    /// 文件帮助类
    /// 
    public class FileHelper
    {
        /// 
        /// 复制一个目录下所有文件到一个新目录下
        /// 
        /// 原目录
        /// 新目录生成方法
        /// 是否复制子文件夹内的文件
        /// 可选:是否覆盖(默认覆盖)
        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);
                }
            }

        }

        /// 
        /// 复制一组文件到一个新目录下
        /// 
        /// 文件列表
        /// 新目录生成方法
        /// 可选:是否覆盖(默认覆盖)
        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);
                }
            }
        }

    }

 

你可能感兴趣的:(C# 文件复制帮助类)