RemoveDirectoryA 函数 (fileapi.h)

删除现有空目录。

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

语法

BOOL RemoveDirectoryA(
  [in] LPCSTR lpPathName
);

参数

[in] lpPathName

要删除的目录的路径。 此路径必须指定一个空目录,并且调用进程必须具有对该目录的删除访问权限。

默认情况下,名称限制为 MAX_PATH 个字符。 若要将此限制扩展到 32,767 个宽字符,请在路径前面添加“\\?\”。 有关详细信息,请参阅命名文件、路径和命名空间

提示

从 Windows 10 版本 1607 开始,可以选择删除MAX_PATH限制,而无需在前面添加“\\?\”。 有关详细信息,请参阅 命名文件、路径和命名空间 的“最大路径长度限制”部分。

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

注解

RemoveDirectory 函数在关闭时标记要删除的目录。 因此,在关闭目录的最后一个句柄之前,不会删除该目录。

若要以递归方式删除目录中的文件,请使用 SHFileOperation 函数。

RemoveDirectory 可用于删除目录交接点。 由于目标目录及其内容仍可通过其规范路径访问,因此删除目标目录的接合点不会影响目标目录本身。 出于此原因,当 lpPathName 引用目录交接点时,无论目标目录是否为空, RemoveDirectory 都将删除指定的链接。 有关交接点的详细信息,请参阅 硬链接和交汇点

使用 POSIX delete 会导致目录在句柄保持打开状态时被删除。 后续调用 CreateDirectory 以打开目录失败, 并ERROR_FILE_NOT_FOUND

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

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

注意

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

要求

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

另请参阅

CreateDirectory

创建和删除目录

目录管理函数

RemoveDirectoryTransacted