Я нашел небольшой фрагмент для создания рекурсивной копии файла в C #, но я несколько озадачен. Мне в основном нужно скопировать структуру каталогов в другое место, в соответствии с этим ...
Источник: 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 приводит меня к более сложным вещам)