【问题标题】:How can I delete files from folders and subfolders before deleting the subfolders themselves in Win32?在 Win32 中删除子文件夹本身之前,如何从文件夹和子文件夹中删除文件?
【发布时间】:2013-10-11 02:19:36
【问题描述】:

删除 Win32 API (RemoveDirectory) 中的目录需要先删除该文件夹下的所有文件,然后再删除该文件夹。因此,假设我在根目录有一个文件夹“foo”,其中包含文件,以及一些也可能有或可能没有文件的子文件夹,我如何递归删除所有文件,然后删除子文件夹?

【问题讨论】:

    标签: c++ windows winapi


    【解决方案1】:

    它通常需要一个递归函数,它读取要删除的目录的内容(通过FindFirstFile()/FindNextFile()) - 如果遇到文件,则将其删除,否则递归到文件夹然后删除递归返回时的文件夹。

    或者您也可以使用IFileOperation,系统会为您完成所有工作。

    【讨论】:

    • 谢谢乔纳森,能否分享一个带有 IFileOperation 接口的代码示例? MSDN 页面没有。
    • 演示 IFileOperation 扩展的完整示例包含在 Windows 软件开发工具包 (SDK) 中。在默认安装中,可以在 %ProgramFiles%\Microsoft SDKs\Windows\v6.0\Samples\WinUI\Shell\AppPlatform\FileOperations 中找到它。
    • 请注意,您也可以使用SHFileOperation(),它使用起来更简单,但不够灵活(现在或多或少已被弃用)。