我找到了一个在 C# 中进行递归文件复制的小片段,但有点难过。我基本上需要将目录结构复制到另一个位置,沿着这个......
来源:C:\data\servers\mc
目标:E:\mc
截至目前,我的复制功能的代码是......
//Now Create all of the directories
foreach (string dirPath in Directory.GetDirectories(baseDir, "*", SearchOption.AllDirectories))
{
Directory.CreateDirectory(dirPath.Replace(baseDir, targetDir));
}
// Copy each file into it’s new directory.
foreach (string file in Directory.GetFiles(baseDir, "*.*", SearchOption.AllDirectories))
{
Console.WriteLine(@"Copying {0}\{1}", targetDir, Path.GetFileName(file));
if (!CopyFile(file, Path.Combine(targetDir, Path.GetFileName(file)), false))
{
int err = Marshal.GetLastWin32Error();
Console.WriteLine("[ERROR] CopyFile Failed on {0} with code {1}", file, err);
}
}
问题是在第二个范围内,我要么:
- 用于
Path.GetFileName(file)
获取没有路径的实际文件名,但我丢失了目录“mc”目录结构或 - 使用没有 Path.Combine 的“文件”。
无论哪种方式,我都必须做一些讨厌的字符串工作。有没有在 C# 中做到这一点的好方法(我对 .NET API 的了解不足导致我把事情复杂化了)