我正在尝试编写代码来删除包含文件的文件夹。我尝试了几种方法,每次都遇到同样的问题。我把文件夹里的文件删了,文件夹貌似没问题。但似乎对该文件夹的某种引用仍然存在。
我单步执行我的代码,然后进入删除函数,它们似乎顺利通过。然后我转到 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/