Я хочу сделать точную копию некоторых файлов, каталогов и подкаталогов на моем USB-накопителе I:/
и хочу, чтобы они находились в C:/backup
(например)
Мой USB-накопитель имеет следующую структуру:
(для примера, на моем диске больше файлов, каталогов и подкаталогов)
курсы/data_structures/db.sql
игры/компьютер/pc-game.exe
экзамены/exam01.doc
Что ж, я не уверен, с чего начать, но моя первая идея — заставить все files
делать это:
string[] files = Directory.GetFiles("I:");
Следующим шагом может быть создание цикла и использование File.Copy
для указания пути назначения:
string destinationPath = @"C:/backup";
foreach (string file in files)
{
File.Copy(file, destinationPath + "\\" + Path.GetFileName(file), true);
}
На данный момент все работает хорошо, но не так, как я хотел, потому что это не реплицирует структуру папок. Также некоторые ошибки случаются, как показано ниже...
- Первый возникает из-за того, что конфигурация моего ПК показывает скрытые файлы для каждой папки, а на моем USB-накопителе есть
AUTORUN.INF
скрытый файл, который больше не скрыт, и цикл пытается скопировать его и в процессе генерирует это исключение:
Доступ к пути «AUTORUN.INF» запрещен.
- Второй происходит, когда некоторые пути слишком длинные, и это генерирует следующее исключение:
Указанный путь, имя файла или оба слишком длинные. Полное имя файла должно быть меньше 260 символов, а имя каталога должно быть меньше 248 символов.
Итак, я не уверен, как этого добиться и проверить каждый возможный случай ошибки. Я хотел бы знать, есть ли другой способ сделать это и как (может быть, какая-то библиотека) или что-то более простое, например, реализованный метод со следующей структурой:
File.CopyDrive(driveLetter, destinationFolder)
(ответы VB.NET также принимаются).
Заранее спасибо.