美文网首页
C# 文件夹复制

C# 文件夹复制

作者: Messix_1102 | 来源:发表于2023-12-19 09:56 被阅读0次

    C# 文件夹复制

    using System;
    using System.IO;
    
    namespace ConsoleAppDemo
    {
        internal class Program
        {
            static void Main(string[] args)
            {
                CopyFolder("D:\\Share", "D:\\Share2");
                Console.WriteLine("done");
                Console.ReadLine();
            }
    
            /// <summary>
            /// 文件夹复制
            /// </summary>
            /// <param name="source"></param>
            /// <param name="destination"></param>
            public static void CopyFolder(string source, string destination) 
            {
                if (!Directory.Exists(destination))
                {
                    Directory.CreateDirectory(destination);
                }
                RecursiveCopyChildren(source, destination);
            }
    
            /// <summary>
            /// 文件/文件夹 递归复制
            /// </summary>
            /// <param name="sourceDir"></param>
            /// <param name="targetDir"></param>
            public static void RecursiveCopyChildren(string sourceDir, string targetDir)
            {
                DirectoryInfo dinfo = new DirectoryInfo(sourceDir);
                // 注,这里面传的是路径,并不是文件,所以不能包含带后缀的文件
                foreach (FileSystemInfo f in dinfo.GetFileSystemInfos())
                {
                    // 目标路径 targetName = 新文件夹路径 + 源文件夹下的子文件(或文件夹)名字
                    // Path.Combine(string a ,string b) 为合并两个字符串
                    string targetName = Path.Combine(targetDir, f.Name);
    
                    if (f is FileInfo)
                    {
                        // 如果是文件就复制
                        // true代表可以覆盖同名文件
                        File.Copy(f.FullName, targetName, true);
                    }
                    else
                    {
                        // 如果是文件夹就创建文件夹,然后递归复制
                        if (!Directory.Exists(targetName))
                        {
                            Directory.CreateDirectory(targetName);
                        }
                        RecursiveCopyChildren(f.FullName, targetName);
                    }
                }
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:C# 文件夹复制

          本文链接:https://www.haomeiwen.com/subject/srszgdtx.html