RSS Feed

Копирование директории вместе с поддиректориями (Delphi)

0

Февраль 1, 2012 by admin

Фукция копирует СОДЕРЖИМОЕ директории SourceDir в директорию TargetDir.

Копируются все файлы, подкаталоги, и файлы находящиеся в этих подкаталогах.

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

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

Зависимости: SysUtils, FileCtrl, Windows

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;

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

Скопирует содержимое директории C:\ (не не саму директорию) в директорию D:\

FullDirectoryCopy(‘C:\’, ’D:\’);

0 comment »

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>