До копирования файл должен быть закрыт или открыт только для чтения. Для этого используются функции CopyFile или CopyFileEx.
Для перемещения файла он должен быть закрыт. Для этого используются функции MoveFile и MoveFileEx, которые копируют файл в новый и удаляют старый.
Копирование существующего файла в новый.
BOOL CopyFile(
LPCTSTR lpExistingFileName, // Имя существующего файла
LPCTSTR lpNewFileName, // Имя результата
BOOL bFailIfExists // Флаги для определения действий для //существующего файла
);
bFailIfExists= TRUE
и новый файл уже существует, то ошибка;
bFailIfExists= FALSE и новый файл уже существует, то файл пересоздается.
Замечание:
Атрибуты безопасности не копируются в результирующий файл.
Файловые атрибуты (FILE_ATTRIBUTE_*) копируются, например, если исходный файл был FILE_ATTRIBUTE_READONLY, то результирующий файл будет тоже только для чтения
Функция MoveFile переименовывает существующий файл или каталог, переносит, если надо с устройства на устройство и, если это каталог, то переносит все вложенные подкаталоги.
BOOL MoveFile(
LPCTSTR lpExistingFileName, // Имя существующего файла или каталога
LPCTSTR lpNewFileName // Новое имя файла или каталога
);
lpExistingFileName – имя существующего файла или каталога;
lpNewFileName – имя нового файла или каталога. Новое имя не должно существовать. Новое имя файла может соответствовать устройству с другой файловой системой. Новый каталог должен быть на том же устройстве.
Рекомендуем выполнить копирование (перемещение) файлов, используя стандартные функции WIN API и функции языка СPP и сравнить их по производительности!