File.Copy

File.Copy ( string Source,
string Destination,
boolean Recurse = true,
boolean Overwrite = true,
boolean AbortOnFail = false,
boolean IncludeHiddenFiles = true,
function CallbackFunction = nil )
Примеры

Описание

Копирует файл в другое местоположение.

Параметры

Source

(строка) Путь к файлу, который нужно скопировать. В этом поле можно использовать подстановочные знаки * и ? для копирования нескольких файлов.

Destination

(строка) Путь к целевой папке или файлу, в которые будет идти копирование.

Предупреждение: Любые папки в пути назначения должны быть в наличии при выполнении этого действия или произойдет ошибка.

Совет: При необходимости можно создать папку назначения действием Folder.Create.

Recurse

(логический) Делать ли рекурсию вложенных папок при использовании подстановочных знаков в параметре Source:

ЗНАЧЕНИЕ
VALUE
ОПИСАНИЕ
DESCRIPTION
trueРекурсия. (По умолчанию)
falseНет рекурсии.

Примечание переводчика: Что такое рекурсия? Представьте, что производится копирование папки с файлами, которая, в свою очередь имеет вложенную папку с файлами. Файлы, что были в первой, родительской папке копируются этим действием без проблем, но для копирования файлов во вложенной, дочерней папке нужно изменить путь. То есть нужно повторно запустить это же действие, но с "удлинившимся" путем. Вот это действие повторного вызова самого себя (того же самого действия) с изменившимся путем и называется рекурсией.

Overwrite

(логический) Переписывать ли любые файлы в папке назначения, если они имеют точно такие же имена как и скопированные файлы:

ЗНАЧЕНИЕ
VALUE
ОПИСАНИЕ
DESCRIPTION
trueКопирование файлов из источника непосредственно поверх файлов, имеющихся в папке назначения. (По умолчанию)
falseНе копировать файл, если другой файл с таким же именем уже существует в папке назначения.

AbortOnFail

(логический) Прерывать ли операцию копирования, если происходит ошибка:

ЗНАЧЕНИЕ
VALUE
ОПИСАНИЕ
DESCRIPTION
trueОстановка копирования при первой же случившейся ошибке.
falseПродолжить копирование файлов, даже если некоторые файлы неудалось скопировать. (По умолчанию)

IncludeHiddenFiles

(логический) Копировать ли файлы, которые имеют атрибуты "скрытый" или "системный":

ЗНАЧЕНИЕ
VALUE
ОПИСАНИЕ
DESCRIPTION
trueКопировать файлы, даже если они имеют установленные атрибуты "скрытый" или "системный".
falseНе копировать любые файлы с установленными атрибутами "скрытый" или "системный". (По умолчанию)

CallbackFunction

(функция) Имя функции, которая будет вызываться всякий раз когда происходит процесс копирования. (Эту возвращающуюся функцию можно использовать для отображения хода выполнения операции копирования, своим собственным способом.)

Примечание: Если в CallbackFunction установлено значение nil, тогда информация о протекании процесса будет отправлена во встроенное диалоговое окно состояния, предполагая что оно в настоящий момент видимое. (Можно показать или скрыть диалоговое окно состояния действиями StatusDlg.Show или StatusDlg.Hide соответственно.)

Возвращающаяся функция должна иметь возможность принять следующие параметры:

Source

(строка) Путь к источнику копируемых файлов (исходный путь).

Destination

(строка) Путь к папке назначения (путь назначения) для скопированного файла.

Copied

(число) Количество байтов, скопированных на настоящий момент.

Total

(число) Общее количество байтов, которое будет копироваться.

FileCopied

(число) Количество байтов текущего файла, скопированных на настоящий момент.

FileTotal

(число) Общее количество байтов текущего файла, которое будет копироваться. Возвращающая функция должна возвращать логическое значение (истина (true) или ложь (false)), показывающее следует ли продолжать операцию копирования:

ЗНАЧЕНИЕ
VALUE
ОПИСАНИЕ
DESCRIPTION
trueПродолжить операцию копирования.
falseОстановить операцию копирования, как только это станет возможным.

Возврат

Ничего. Можно использовать Application.GetLastError для определения случился ли отказ в работе этого действия и почему.
Смотрите также: Связанные действия

Примеры

Пример 1

File.Copy("AutoPlay\\Docs\\*.txt", _TempFolder .. "\\Text Files", false);
Копируем все текстовые файлы в папке "AutoPlay\Docs" во вложенную папку по имени "Text Files" внутри временной папки пользователя, и не заходим с поисками файлов с расширением .txt ни в какие вложенные папки внутри "AutoPlay\Docs".

Пример 2

File.Copy(_SourceFolder .. "\\hidden.dat", _TempFolder .. "\\z3j2rlk\\sneaky.exe", false, true, false, true, CB_Copy);
Копируем файл по имени "hidden.dat" из папке, где размещен файл autoplay.exe, в папку по имени "z3j2rlk" во временной папке пользователя. В процессе копирования переименовываем файл в "sneaky.exe". Опция рекурсии отключена, другие логические параметры установлены в их значения по умолчанию. Функция по имени CB_Copy будет вызываться всякий раз, при выполнении операции копирования (т.е. каждый раз при копировании n-ного количества байтов).

Пример 3

-- Get the path to the user's My Documents folder.
-- Получаем путь к папке пользователя Мои документы.
DestFolder = Shell.GetFolder(SHF_MYDOCUMENTS);

-- Create a folder in the user's My Documents folder called "Copied Files".
-- Создаем папку по имени "Copied Files", в папке пользователя Мои документы.
Folder.Create(DestFolder .. "\\Copied Files");

-- Copy all files within the Docs folder on the CD-ROM to the destination.
-- Копируем все файлы внутри папки Docs на CD-ROM в место назначения.
StatusDlg.Show(MB_ICONNONE, false);
File.Copy("AutoPlay\\Docs\\*.*", DestFolder .. "\\Copied Files\\", true, true, false, true, nil);

-- Check to see if the File.Copy action failed by getting it's error code.
-- Смотрим, не произошло ли неудачи в действии File.Copy, получением его кода ошибки.
error = Application.GetLastError();
StatusDlg.Hide();

-- If it failed (not equal to 0), display a dialog informing the user.
-- If it succeeded, open an explore window showing the "Copied Files" folder.
-- Если произошла ошибка (код ошибки не равен 0), показываем диалоговое окно, уведомляющее пользователя.
-- Если действие прошло успешно, открываем окно Проводника, показывающее папку "Copied Files".
if error ~= 0 then
    result = Dialog.Message("Error", "There was an error copying the files to your system. Please try again.", MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1);
else
    Shell.Execute(DestFolder .. "\\Copied Files", "explore", "", "", SW_SHOWNORMAL);
end
Копируем все файлы из папки "Docs" на CD-ROM в папку по имени "Copied Files" в папке пользователя Мои документы. Если действие потерпело неудачу, показываем сообщение об ошибке. Если операция прошла успешно, открываем папку назначения в окне Проводника.
Смотрите также: Связанные действия