ใช้ DirectoryInfo แบบ Recursive เพื่อ Copy ทั้งไฟล์และโฟลเดอร์ย่อย
ตัวอย่างโค้ดเต็ม
using System;
using System.IO;
namespace DemoApplication
{
class Program
{
static void Main()
{
string source = @"D:\DemoSourceDirectory";
string target = @"D:\DemoTargetDirectory";
CopyAll(new DirectoryInfo(source), new DirectoryInfo(target));
Console.ReadLine();
}
static void CopyAll(DirectoryInfo source, DirectoryInfo target)
{
Directory.CreateDirectory(target.FullName);
// Copy Files
foreach (FileInfo file in source.GetFiles())
{
Console.WriteLine($"Copying {target.FullName}\\{file.Name}");
file.CopyTo(Path.Combine(target.FullName, file.Name), true); // Overwrite
}
// Recurse Subdirectories
foreach (DirectoryInfo subDir in source.GetDirectories())
{
DirectoryInfo nextTarget = target.CreateSubdirectory(subDir.Name);
CopyAll(subDir, nextTarget);
}
}
}
}
โครงสร้าง Source:

ผลลัพธ์ Target:

