我试图编写将删除其中包含文件的文件夹的代码。我尝试了几种方法,每次都遇到同样的问题。我删除文件夹中的文件和文件夹看起来很好。但似乎某种文件夹的引用仍然存在。
我踏上了我的代码,然后我进入了删除功能,它们似乎很顺利。然后我转到Windows资源管理器并尝试访问我刚刚删除的文件夹。即使代码说它删除了它仍然存在,但是当我点击它时它会显示“拒绝访问”。我试过的其中一个方法确实从Windows资源管理器中删除了该文件夹,但是当我尝试创建一个具有相同名称和位置的文件夹时,我收到一个错误,并且从GetLastError中它显示为E_ACCESSDENIED。
为了正确删除文件夹,我还需要做些什么吗?
我使用的一种方法是使用SHFileOperation。另一种方法是使用FindFirstData并删除所有文件,然后使用RemoveDirectory删除空文件夹。两者都引导我解决这个Access Denied问题。
编辑:这是我的SHFileOperation。 https://stackoverflow.com/questions/9291995/cant-get-shfileoperation-to-delete-a-directory-with-more-than-one-file
答案 0 :(得分:1)
您可以使用Boost.FileSystem。
在你的情况下
boost::filesystem::remove_all(yourPath)
这将删除路径中的所有文件。然后使用:
RemoveDirectory( LPCTSTR lpPathName ); // Windows only
答案 1 :(得分:1)
您可以使用
system ( "RD /S /Q [path] " );
效果很好,但会永久删除文件夹中的所有内容。 所以在你使用它之前备份!!
答案 2 :(得分:0)
查看我用C ++ here写的remove_folder()
,我回答了与你类似的问题。它不使用任何第三方库,如boost。