C# 文件夾復(fù)制
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>
/// 文件夾復(fù)制
/// </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>
/// 文件/文件夾 遞歸復(fù)制
/// </summary>
/// <param name="sourceDir"></param>
/// <param name="targetDir"></param>
public static void RecursiveCopyChildren(string sourceDir, string targetDir)
{
DirectoryInfo dinfo = new DirectoryInfo(sourceDir);
// 注纤怒,這里面?zhèn)鞯氖锹窂狡致恚⒉皇俏募圆荒馨瑤Ш缶Y的文件
foreach (FileSystemInfo f in dinfo.GetFileSystemInfos())
{
// 目標路徑 targetName = 新文件夾路徑 + 源文件夾下的子文件(或文件夾)名字
// Path.Combine(string a ,string b) 為合并兩個字符串
string targetName = Path.Combine(targetDir, f.Name);
if (f is FileInfo)
{
// 如果是文件就復(fù)制
// true代表可以覆蓋同名文件
File.Copy(f.FullName, targetName, true);
}
else
{
// 如果是文件夾就創(chuàng)建文件夾余爆,然后遞歸復(fù)制
if (!Directory.Exists(targetName))
{
Directory.CreateDirectory(targetName);
}
RecursiveCopyChildren(f.FullName, targetName);
}
}
}
}
}