c++ - 在代码中 - 删除包含文件的文件夹

标签 c++ windows file directory

我正在尝试编写代码来删除包含文件的文件夹。我尝试了几种方法,每次都遇到同样的问题。我把文件夹里的文件删了,文件夹貌似没问题。但似乎对该文件夹的某种引用仍然存在。

我单步执行我的代码,然后进入删除函数,它们似乎顺利通过。然后我转到 Windows 资源管理器并尝试访问我刚刚删除的文件夹。它仍然存在,即使代码说它删除了它,但当我点击它时它显示“拒绝访问”。我尝试过的一种方法确实从 Windows 资源管理器中删除了该文件夹,但是当我尝试创建一个具有相同名称和位置的文件夹时,我收到错误消息,GetLastError 显示 E_ACCESSDENIED。

那么我必须做些什么才能正确删除文件夹吗?

我使用的一种方法是使用 SHFileOperation。另一个是使用 FindFirstData 并删除所有文件,然后使用 RemoveDirectory 删除空文件夹。两者都让我遇到了这个访问被拒绝的问题。

编辑:这是我的 SHFileOperation。 https://stackoverflow.com/questions/9291995/cant-get-shfileoperation-to-delete-a-directory-with-more-than-one-file

最佳答案

您可以使用 Boost.FileSystem .

在你的情况下是

boost::filesystem::remove_all(yourPath)

这将删除路径中的所有文件。然后使用:

RemoveDirectory( LPCTSTR lpPathName );    // Windows only

关于c++ - 在代码中 - 删除包含文件的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9310827/

相关文章:

c++ - 无法弄清楚为什么没有在 SDL 中绘制线

c++ - 备份和恢复所有注册表

c - 强制操作系统在后台运行一个没有其他程序的程序

c++ - InternetReadFile 填充缓冲区,但返回读取的零字节

file - 来自流的字符

java - 为什么文件被保存到 NetBeans 中的不同目录路径?

c++ - 如何在不阻塞的情况下启动Qt事件进程?

c++ - 将二进制数据读入 std::string C++

c++ - 显示深度优先搜索图遍历 C++

javascript - 在 JavaScript 中访问本地文件修改时间