Функция CopyFile (winbase.h)

Копирует существующий файл в новый файл.

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

Чтобы выполнить эту операцию как транзакцию, используйте функцию CopyFileTransacted .

Синтаксис

BOOL CopyFile(
  [in] LPCTSTR lpExistingFileName,
  [in] LPCTSTR lpNewFileName,
  [in] BOOL    bFailIfExists
);

Параметры

[in] lpExistingFileName

Имя существующего файла.

По умолчанию имя ограничено MAX_PATH символами. Чтобы расширить это ограничение до 32 767 символов в ширину, добавьте к пути "\\?\". Дополнительные сведения см. в статье Именование файлов, путей и пространств имен.

Совет

Начиная с Windows 10 версии 1607, вы можете согласиться на удаление ограничения MAX_PATH без добавления в начало "\\?\". Дополнительные сведения см. в разделе "Ограничение максимальной длины пути" статьи Именование файлов, путей и пространств имен .

Если lpExistingFileName не существует, copyFile завершается ошибкой, а GetLastError возвращает ERROR_FILE_NOT_FOUND.

[in] lpNewFileName

Имя нового файла.

По умолчанию имя ограничено MAX_PATH символами. Чтобы расширить это ограничение до 32 767 символов в ширину, добавьте к пути "\\?\". Дополнительные сведения см. в статье Именование файлов, путей и пространств имен.

Совет

Начиная с Windows 10 версии 1607, вы можете согласиться на удаление ограничения MAX_PATH без добавления в начало "\\?\". Дополнительные сведения см. в разделе "Ограничение максимальной длины пути" статьи Именование файлов, путей и пространств имен .

[in] bFailIfExists

Если этот параметр имеет значение TRUE и новый файл, указанный в параметре lpNewFileName , уже существует, функция завершается ошибкой. Если этот параметр имеет значение FALSE и новый файл уже существует, функция перезаписывает существующий файл и выполняется успешно.

Возвращаемое значение

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Свойства ресурса безопасности (ATTRIBUTE_SECURITY_INFORMATION) для существующего файла копируются в новый файл.

Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Свойства ресурса безопасности для существующего файла не копируются в новый файл, пока не Windows 8 и Windows Server 2012.

Атрибуты файла для существующего файла копируются в новый файл. Например, если существующий файл имеет атрибут FILE_ATTRIBUTE_READONLY file, копия, созданная с помощью вызова CopyFile , также будет иметь атрибут FILE_ATTRIBUTE_READONLY file. Дополнительные сведения см. в разделе Извлечение и изменение атрибутов файла.

Эта функция завершается сбоем с ERROR_ACCESS_DENIED , если целевой файл уже существует и имеет атрибут FILE_ATTRIBUTE_HIDDEN или FILE_ATTRIBUTE_READONLY .

Если copyFile используется для копирования зашифрованного файла, он пытается зашифровать целевой файл с помощью ключей, используемых при шифровании исходного файла. Если это не удается сделать, эта функция пытается зашифровать целевой файл с помощью ключей по умолчанию. Если ни из этих методов не удается выполнить, copyFile завершается сбоем с кодом ошибки ERROR_ENCRYPTION_FAILED .

Поведение символьной ссылки. Если исходный файл является символьной ссылкой, то фактически скопированный файл является целевым объектом символьной ссылки.

Если целевой файл уже существует и является символьной ссылкой, целевой объект символьной ссылки перезаписывается исходным файлом.

В Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями.

Технология Поддерживается
Протокол SMB 3.0 Да
SMB 3.0 Transparent Failover (TFO) Да
SMB 3.0 с масштабируемыми общими папками (SO) Да
Файловая система общего тома кластера (CSVFS) Да
Восстанавливаемая файловая система (ReFS) Да
 

Примеры

Пример см. в разделе Извлечение и изменение атрибутов файла.

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

CopyFileEx

CopyFileTransacted

CreateFile

Константы атрибутов файлов

Функции управления файлами

MoveFile

Символьные ссылки