using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; namespace FileUtility { public class Program { public static void DeepCopy(DirectoryInfo source, DirectoryInfo target, params string[] excludePatterns) { if (target.FullName.Contains(source.FullName)) return; // Go through the Directories and recursively call the DeepCopy Method for each one foreach (DirectoryInfo dir in source.GetDirectories()) { var dirName = dir.Name; var shouldExclude = excludePatterns.Aggregate(false, (current, pattern) => current || Regex.Match(dirName, pattern).Success); if (!shouldExclude) DeepCopy(dir, target.CreateSubdirectory(dir.Name), excludePatterns); } // Go ahead and copy each file to the target directory foreach (FileInfo file in source.GetFiles()) { var fileName = file.Name; var shouldExclude = excludePatterns.Aggregate(false, (current, pattern) => current || Regex.Match(fileName, pattern).Success); if (!shouldExclude) file.CopyTo(Path.Combine(target.FullName, fileName)); } } static void Main(string[] args) { DeepCopy(new DirectoryInfo(@"d:/test/b"), new DirectoryInfo(@"d:/test/a")); DeepCopy(new DirectoryInfo(@"d:/test/c"), new DirectoryInfo(@"d:/test/c/c.1")); DeepCopy(new DirectoryInfo(@"d:/test/1/"), new DirectoryInfo(@"d:/test/2/"), new string[] { ".*\\.txt" }); Console.WriteLine("复制成功..."); Console.ReadKey(); } } }
更多c#深拷贝文件夹示例相关文章请关注PHP中文网!