Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Копирование содержимого директории, вместе с поддиректориями

Delphi , Файловая система , Директории

Копирование содержимого директории, вместе с поддиректориями

Автор: VID
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Копирование содержимого директории, вместе с поддиректориями.

Фукция копирует СОДЕРЖИМОЕ директории SourceDir в директорию TargetDir.
Копируются все файлы, подкаталоги, и файлы находящиеся в этих подкаталогах.

Аргумент StopIfNotAllCopied: если значение этого аргумента = True,
то при первой же ошибке копирования файла или папки, работы функции
прекратится а функуция вернёт False. В случае если этот аргумент = False,
то ошибки копирования учитываться не будут.

Аргумент OverWriteFiles: если True, то существующие файлы будут переписаны.

Зависимости: SysUtils, FileCtrl, Windows
Автор:       VID, snap@iwt.ru, ICQ:132234868, Махачкала
Copyright:   VID
Дата:        31 января 2003 г.
***************************************************** }

function FullDirectoryCopy(SourceDir, TargetDir: string; StopIfNotAllCopied,
  OverWriteFiles: Boolean): Boolean;
var
  SR: TSearchRec;
  I: Integer;
begin
  Result := False;
  SourceDir := IncludeTrailingBackslash(SourceDir);
  TargetDir := IncludeTrailingBackslash(TargetDir);
  if not DirectoryExists(SourceDir) then
    Exit;
  if not ForceDirectories(TargetDir) then
    Exit;

  I := FindFirst(SourceDir + '*', faAnyFile, SR);
  try
    while I = 0 do
    begin
      if (SR.Name <> '') and (SR.Name <> '.') and (SR.Name <> '..') then
      begin
        if SR.Attr = faDirectory then
          Result := FullDirectoryCopy(SourceDir + SR.Name, TargetDir + SR.NAME,
            StopIfNotAllCopied, OverWriteFiles)
        else if not (not OverWriteFiles and FileExists(TargetDir + SR.Name))
          then
          Result := CopyFile(Pchar(SourceDir + SR.Name), Pchar(TargetDir +
            SR.Name), False)
        else
          Result := True;
        if not Result and StopIfNotAllCopied then
          exit;
      end;
      I := FindNext(SR);
    end;
  finally
    SysUtils.FindClose(SR);
  end;
end;

Пример использования:

FullDirectoryCopy('C:\a', 'D:\b');
// Скопирует содержимое директории C:\a (не не саму директорию) в директорию D:\b

Функция Delphi, называемая FullDirectoryCopy, копирует содержимое исходного каталога в целевой каталог, включая подкаталоги и файлы. Функция принимает четыре аргумента:

  • SourceDir: путь к исходному каталогу
  • TargetDir: путь к целевому каталогу
  • StopIfNotAllCopied: булевое значение, указывающее, должен ли функция остановиться при возникновении ошибки
  • OverWriteFiles: булевое значение, указывающее, должен ли функция перезаписывать существующие файлы

Функция возвращает булевое значение, указывающее, была ли операция копирования успешной.

Вот разбивка кода:

  1. В первой секции инициализируется возвращаемое значение False, а добавляются конечные обратные слэши в пути исходного и целевого каталогов.
  2. Если исходный каталог не существует, функция выходит из программы сразу.
  3. Если целевой каталог не существует, функция создает его с помощью ForceDirectories.
  4. Функция затем перебирает файлы и подкаталоги в исходном каталоге с помощью объекта TSearchRec. Для каждого элемента:
    • Если элемент - это каталог, функция рекурсивно вызывает себя для копирования содержимого этого каталога.
    • Если элемент - это файл, функция копирует его в целевой каталог с помощью CopyFile. Если файл уже существует и OverWriteFiles равен False, функция пропускает файл.
  5. Функция проверяет, возникли ли ошибки при операции копирования. Если StopIfNotAllCopied равно True, функция выходит из программы сразу, если возникла ошибка. В противном случае она продолжает следующий элемент в исходном каталоге.
  6. Наконец, функция закрывает поиск с помощью SysUtils.FindClose.

Пример использования показывает, как вызывать функцию с исходным каталогом 'C:\a' и целевым каталогом 'D:\b'. Функция будет копировать все файлы и подкаталоги из 'C:\a' в 'D:\b', исключая исходный каталог сам по себе.

В целом, это полезная функция для копирования каталогов и их содержимого в Delphi.

Копирование содержимого директории, вместе с поддиректориями, функция FullDirectoryCopy копирует содержимое директории SourceDir в директорию TargetDir.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Директории ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:06:31/0.0057868957519531/1