VSS в C # NET DirectoryCopy Функция - PullRequest
0 голосов
/ 12 августа 2011

Я пишу класс (основанный на библиотеке классов), который создает RAMDisk, и каждые X минут мне нужно сделать резервную копию содержимого RAMDisk в физическом месте из-за нестабильности.Было предложено использовать CopyFileEx, так как, очевидно, методы копирования файлов .NET не работают.

По какой-то причине я получаю ошибку Invalid Arguements при попытке использовать CopyFileEx.Я предполагаю, что я все еще могу использовать остальные методы .NET в этой функции, но мог бы просто использовать некоторую помощь для ее исправления / очистки.

public static void CopyDirectoryVSS(string sourcePath, string targetPath)
{
    // Check if the target directory exists, if not, create it.
    if (Directory.Exists(targetPath) == false)
    {
        Directory.CreateDirectory(targetPath);
    }

    // Copy each file into it’s new directory.
    foreach (string dir in Directory.GetDirectories(sourcePath))
    {
        foreach (string file in Directory.GetFiles(dir, "*.*"))
        {
            Console.WriteLine(@"Copying {0}\{1}", targetPath, file);
            CopyFileEx(file, Path.Combine(target, file), null, 0, 0, 0);
        }
    }

    // Copy each subdirectory using recursion.
    DirectoryInfo sourceDir = new DirectoryInfo(@sourcePath);
    DirectoryInfo TargetDir = new DirectoryInfo(targetPath);

    foreach (DirectoryInfo diSourceSubDir in sourceDir.GetDirectories())
    {
        DirectoryInfo nextTargetSubDir = TargetDir.CreateSubdirectory(diSourceSubDir.Name);
        CopyDirectory(diSourceSubDir, nextTargetSubDir);
    }
}

1 Ответ

0 голосов
/ 03 октября 2011

Проверьте ответ здесь: я предполагаю, что решение для копирования будет чище, и вы, по сути, делаете то же самое: Рекурсивное копирование файлов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...