我找到了一个用C#进行递归文件复制的代码片段,但是还有些困惑。我需要将一个目录结构复制到另一个位置,类似于以下这样的操作...
问题在于在第二个作用域中,我要么使用
无论哪种方式,我都需要做一些糟糕的字符串操作。有没有一种好的方法在C#中实现这一点(我对.NET API的缺乏了解导致我过度复杂化了事情)。
源路径: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的缺乏了解导致我过度复杂化了事情)。