C#将一个目录与另一个目录合并

时间:2012-01-29 13:35:51

标签: c# directory

我有一个autoupdater C#程序。它将下载一个rar文件,该文件将更新的或更新的文件保存到某些软件中。 rar文件的结构就像软件的基本目录一样,但只包含已更改的文件/文件夹。是否有一种简单的方法可以将这些文件/文件夹“合并”到目标目录中,这样如果文件/文件夹已经存在,它将被替换,如果没有,它将被添加或者我必须手动遍历每个文件/文件夹,自己这样做?只是希望.NET有一个很好的小合并函数:)

2 个答案:

答案 0 :(得分:21)

DirectoryInfo Class

  

以下示例演示了如何复制目录及其内容。

public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
{
    if (source.FullName.ToLower() == target.FullName.ToLower())
    {
        return;
    }

    // Check if the target directory exists, if not, create it.
    if (Directory.Exists(target.FullName) == false)
    {
        Directory.CreateDirectory(target.FullName);
    }

    // Copy each file into it's new directory.
    foreach (FileInfo fi in source.GetFiles())
    {
        Console.WriteLine(@"Copying {0}\{1}", target.FullName, fi.Name);
        fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
    }

    // Copy each subdirectory using recursion.
    foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
    {
        DirectoryInfo nextTargetSubDir =
            target.CreateSubdirectory(diSourceSubDir.Name);
        CopyAll(diSourceSubDir, nextTargetSubDir);
    }
}

答案 1 :(得分:2)

最简单的方法是使用FileSystem.MoveDirectory方法。请务必添加对Microsoft.VisualBasic.dll

的引用
using Microsoft.VisualBasic.FileIO;
...
// Merge D:\SourceDir with D:\DestDir:
FileSystem.MoveDirectory("D:\\SourceDir", "D:\\DestDir", true /* Overwrite */);