CopyFileA 函数 (winbase.h)

将现有文件复制到新文件。

CopyFileEx 函数提供两个附加功能。 每次完成复制操作的一部分时,CopyFileEx 都可以调用指定的回调函数,并且可以在复制操作期间取消 CopyFileEx

若要以事务处理操作的形式执行此操作,请使用 CopyFileTransacted 函数。

语法

BOOL CopyFileA(
  [in] LPCSTR lpExistingFileName,
  [in] LPCSTR 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 文件属性,则通过调用 CopyFile 创建的副本也将具有 FILE_ATTRIBUTE_READONLY 文件属性。 有关详细信息,请参阅 检索和更改文件属性

如果目标文件已存在并且设置了FILE_ATTRIBUTE_HIDDEN或FILE_ATTRIBUTE_READONLY属性,则此函数将失败并ERROR_ACCESS_DENIED

CopyFile 用于复制加密的文件时,它会尝试使用源文件加密中使用的密钥来加密目标文件。 如果无法执行此操作,此函数将尝试使用默认密钥加密目标文件。 如果这两种方法都无法完成, 则 CopyFile 将失败并 显示ERROR_ENCRYPTION_FAILED 错误代码。

符号链接行为 - 如果源文件是符号链接,则复制的实际文件是符号链接的目标。

如果目标文件已存在并且是符号链接,则符号链接的目标将被源文件覆盖。

在 Windows 8 和 Windows Server 2012 中,此函数由以下技术支持。

技术 支持
服务器消息块 (SMB) 3.0 协议
SMB 3.0 透明故障转移 (TFO)
具有横向扩展文件共享的 SMB 3.0 (SO)
群集共享卷文件系统 (CSV)
弹性文件系统 (ReFS)
 

示例

有关示例,请参阅 检索和更改文件属性

注意

winbase.h 标头将 CopyFile 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows XP [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 winbase.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

CopyFileEx

CopyFileTransacted

CreateFile

文件特性常量

文件管理函数

MoveFile

符号链接