检查是否可以删除目录树而不实际开始删除它

时间:2012-07-18 07:05:18

标签: c++ windows winapi

在我的程序中,我需要能够删除旧输出的目录。但其中的一些文件可能会被锁定。在这种情况下,我想警告用户他需要在程序继续之前关闭锁定它们的应用程序,使用“重试/取消”对话框,如果用户单击“取消”,我希望目录保持不变。

那么,任何人都可以告诉我一种方法来检查是否可以删除整个目录树(没有任何子目录中的锁定文件),而不修改其内容 - 类似于干运行。

3 个答案:

答案 0 :(得分:3)

也许您可以尝试重命名父目录,在Windows中至少会出现错误,说如果子文件夹中的文件被锁定则无法执行。如果重命名成功,则在删除之前删除并阻止其他人访问树应该是安全的。

答案 1 :(得分:1)

您可以在目录树中的每个文件上调用_access函数。但仍有人可以在检查文件后锁定文件。

答案 2 :(得分:1)

使用重启管理器会告诉您是否正在使用任何文件并提供关闭它们。在你的检查之后,没有任何东西能够抵御锁定它们的竞争条件。