如何在.NET中复制文件夹和所有子文件夹和文件?

时间:2009-06-30 23:50:42

标签: .net file copy directory

  

可能重复:
  Best way to copy the entire contents of a directory in C#

我想在.NET中将包含其所有子文件夹和文件的文件夹从一个位置复制到另一个位置。最好的方法是什么?

我在System.IO.File类上看到了Copy方法,但是想知道是否有一种比抓取目录树更简单,更好或更快的方法。

3 个答案:

答案 0 :(得分:49)

嗯,有史蒂夫引用的VisualBasic.dll实现,这是我用过的东西。

private static void CopyDirectory(string sourcePath, string destPath)
{
    if (!Directory.Exists(destPath))
    {
        Directory.CreateDirectory(destPath);
    }

    foreach (string file in Directory.GetFiles(sourcePath))
    {
        string dest = Path.Combine(destPath, Path.GetFileName(file));
        File.Copy(file, dest);
    }

    foreach (string folder in Directory.GetDirectories(sourcePath))
    {
        string dest = Path.Combine(destPath, Path.GetFileName(folder));
        CopyDirectory(folder, dest);
    }
}

答案 1 :(得分:12)

Michal Talaga在他的post中引用了以下内容:

  • Microsoft解释为什么不应该在.NET中进行Directory.Copy()操作。
  • Microsoft.VisualBasic.dll程序集中的CopyDirectory()实现。

但是,基于File.Copy()Directory.CreateDirectory()的递归实现应该足以满足最基本的需求。

答案 2 :(得分:2)

如果你没有得到更好的结果......也许可以使用Process.Start启动robocopy.exe