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 删除会导致目录在句柄保持打开状态时被删除。 后续调用 CreateDirectory 打开目录失败,ERROR_FILE_NOT_FOUND。
在 Windows 8 和 Windows Server 2012 中,以下技术支持此函数:
科技 | 支持 |
---|---|
服务器消息块 (SMB) 3.0 协议 | 是的 |
SMB 3.0 透明故障转移 (TFO) | 是的 |
具有横向扩展文件共享的 SMB 3.0 (SO) | 是的 |
群集共享卷文件系统 (CsvFS) | 是的 |
可复原文件系统 (ReFS) | 是的 |
注意
fileapi.h 标头将 RemoveDirectory 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows XP [桌面应用 |UWP 应用] |
支持的最低服务器 | Windows Server 2003 [桌面应用 |UWP 应用] |
目标平台 | 窗户 |
标头 | fileapi.h (包括 Windows.h) |
库 | Kernel32.lib |
DLL | Kernel32.dll |