C # объединить один каталог с другим - PullRequest
7 голосов
/ 29 января 2012

У меня есть программа автообновления C #.Он загрузит rar-файл, содержащий измененные или новые файлы для обновления программного обеспечения.Файл rar имеет свою структуру, как и базовый каталог программного обеспечения, но содержит только измененные или новые файлы / папки.Существует ли простой способ «объединить» эти файлы / папки с целевым каталогом, так что если файл / папка уже существует, она будет заменена, а если нет, то будет добавлена, или мне придется вручную просматривать каждый файл/ Папка и сделать это сам?Просто надеясь, что есть отличная маленькая функция слияния, которая есть в .NET:)

Ответы [ 2 ]

21 голосов
/ 29 января 2012

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);
    }
}
2 голосов
/ 04 ноября 2016

Самый простой способ - использовать метод FileSystem.MoveDirectory .Обязательно добавьте ссылку на Microsoft.VisualBasic.dll:

using Microsoft.VisualBasic.FileIO;
...
// Merge D:\SourceDir with D:\DestDir:
FileSystem.MoveDirectory("D:\\SourceDir", "D:\\DestDir", true /* Overwrite */);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...