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);
}
}
}
}
}
网友评论