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

时间:2012-02-16 11:53:55

标签: c++ windows file directory

我试图编写将删除其中包含文件的文件夹的代码。我尝试了几种方法,每次都遇到同样的问题。我删除文件夹中的文件和文件夹看起来很好。但似乎某种文件夹的引用仍然存在。

我踏上了我的代码,然后我进入了删除功能,它们似乎很顺利。然后我转到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

3 个答案:

答案 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。

相关问题