c# 递归获取所有目录,所有文件,并替换文件

//获取所有文件
private
static void GetFileList(DirectoryInfo dir, List<FileInfo> fileList) { fileList.AddRange(dir.GetFiles()); foreach (DirectoryInfo directory in dir.GetDirectories()) GetFileList(directory, fileList); }
//获取所有目录
private static void GetDirList(DirectoryInfo dir, List<DirectoryInfo> dirList) { dirList.AddRange(dir.GetDirectories()); foreach (DirectoryInfo directory in dir.GetDirectories()) GetDirList(directory, dirList); } public static void CopyDireToDire(string sourceDire, string destDire, string backupsDire) { if (!Directory.Exists(destDire)) { Directory.CreateDirectory(destDire); } if (!Directory.Exists(backupsDire)) { Directory.CreateDirectory(backupsDire); } DirectoryInfo sourceDireInfo = new DirectoryInfo(sourceDire); List<FileInfo> fileList = new List<FileInfo>(); GetFileList(sourceDireInfo, fileList); List<DirectoryInfo> dirList = new List<DirectoryInfo>(); GetDirList(sourceDireInfo, dirList);
//新增不存在目录
foreach (DirectoryInfo dir in dirList) { string m = dir.FullName; string n = m.Replace(sourceDire, destDire); if (!Directory.Exists(n)) { Directory.CreateDirectory(n); } string o = m.Replace(sourceDire, backupsDire); if (!Directory.Exists(o)) { Directory.CreateDirectory(o); } }
//替换文件,并备份
foreach (FileInfo fileInfo in fileList) { string sourceFile = fileInfo.FullName; string destFile = sourceFile.Replace(sourceDire, destDire); if (File.Exists(destFile)) { string backFile = destFile.Replace(destDire, backupsDire); File.Copy(destFile, backFile, true); } File.Copy(sourceFile, destFile, true); } }

部分参考其他的,

原文地址:https://www.cnblogs.com/huanyun/p/14101724.html