.NET Core中复制源文件夹下的所有内容到新文件夹

.NET Core中没有原生的复制文件夹方法,我们可以自己写个:

新建一个.NET Core控制台项目,示例代码如下:

using System;
using System.IO;

namespace CoreIO
{
    class Program
    {
        /// <summary>
        /// 复制源文件夹下的所有内容到新文件夹
        /// </summary>
        /// <param name="sources">源文件夹路径</param>
        /// <param name="dest">新文件夹路径</param>
        static void CopyFolder(string sources, string dest)
        {
            DirectoryInfo dinfo = new DirectoryInfo(sources);
            //注,这里面传的是路径,并不是文件,所以不能包含带后缀的文件                
            foreach (FileSystemInfo f in dinfo.GetFileSystemInfos())
            {
                //目标路径destName = 新文件夹路径 + 源文件夹下的子文件(或文件夹)名字                
                //Path.Combine(string a ,string b) 为合并两个字符串                     
                string destName = Path.Combine(dest, f.Name);
                if (f is FileInfo)
                {
                    //如果是文件就复制       
                    File.Copy(f.FullName, destName, true);//true代表可以覆盖同名文件                     
                }
                else
                {
                    //如果是文件夹就创建文件夹,然后递归复制              
                    Directory.CreateDirectory(destName);
                    CopyFolder(f.FullName, destName);
                }
            }
        }

        static void Main(string[] args)
        {
            string sourceFolder = @"F:\xBackup";
            string destFolder = @"F:\DemoFolder";

            CopyFolder(sourceFolder, destFolder);

            Console.WriteLine("Press any key to end...");
            Console.ReadKey();
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/OpenCoder/p/10657147.html