Практическое руководство. Копирование каталога в другой каталог в Visual Basic
CopyDirectory можно использовать для копирования каталога в другой каталог. Этот метод копирует содержимое каталога, а также сам каталог. Если каталог назначения не существует, он будет создан. Если каталог с тем же именем существует в местоположении назначения, а параметру overwrite присвоено значение False, то содержимое двух каталогов будут объединено. Можно указать новое имя каталога во время выполнения операции.
При копировании файлов в каталоге могут создаваться исключения, например, если при объединении каталогов тот или иной файл уже существует в каталоге, а параметру overwrite присвоено значение False. В случае возникновения таких исключений они объединяются в одно исключение. Свойство Data такого исключения содержит записи, в которых ключ представляет путь к файлу или каталогу, а значение — сообщение исключения.
Чтобы скопировать каталог в другой каталог
Используйте метод CopyDirectory, указав имена исходного каталога и каталога назначения. В следующем примере каталог TestDirectory1 копируется в каталог TestDirectory2, при этом происходит перезапись существующих файлов.
My.Computer.FileSystem.CopyDirectory("C:\TestDirectory1", "C:\TestDirectory2", True)
Данный пример кода доступен также в качестве фрагмента кода IntelliSense. В окне выбора фрагмента кода он находится в разделе Файловая система — Обработка дисков, папок и файлов. Дополнительные сведения см. в разделе Фрагменты кода.
Отказоустойчивость
При следующих условиях возможно возникновение исключения.
Новое имя каталога содержит двоеточие (:) или косую черту (\ или /) (ArgumentException).
Путь может являться недопустимым по одной из следующих причин: путь представляет собой строку нулевой длины (пустую строку); путь содержит только пробелы; путь содержит недопустимые знаки; или путь представляет собой путь к устройству (начинается с \\. \) (ArgumentException).
Путь не является допустимым, поскольку он равен Nothing (ArgumentNullException).
Параметр destinationDirectoryName равен Nothing или является пустой строкой (ArgumentNullException).
Исходный каталог не существует (DirectoryNotFoundException).
Исходный каталог является корневым (IOException).
Объединенный путь указывает на существующий файл (IOException).
Исходный и конечный пути совпадают (IOException).
Параметр ShowUI имеет значение UIOption.AllDialogs, а пользователь отменил операцию, или один или несколько файлов в каталоге не могут быть скопированы (OperationCanceledException).
Операция является циклической (InvalidOperationException).
Путь содержит двоеточие (:) (NotSupportedException).
Длина пути превышает максимальную длину, определенную в системе (PathTooLongException).
Имя файла или папки в пути содержит двоеточие (:) или имеет недопустимый формат (NotSupportedException).
У пользователя отсутствуют необходимые разрешения на просмотр пути (SecurityException).
Конечный файл существует, но к нему нет доступа (UnauthorizedAccessException).
См. также
Задачи
Практическое руководство. Поиск подкаталогов по шаблону в Visual Basic
Практическое руководство. Получение коллекции содержащихся в каталоге файлов в Visual Basic