在我的程序中,我需要能够删除带有旧输出的目录。但是里面的一些文件可能被锁定了。在这种情况下,我想通过重试/取消对话框警告用户他需要在程序继续之前关闭锁定它们的应用程序,如果用户单击取消,我希望目录保持不变。
那么,谁能告诉我一种方法来检查是否可以删除整个目录树(在任何子目录中都没有锁定的文件),而无需修改其内容 - 就像试运行一样。
也许您可以尝试重命名父目录,至少在 Windows 中您会收到一条错误消息,指出如果子文件夹中的文件被锁定,这是不可能的。如果重命名成功,删除它应该是安全的,并防止其他人在删除之前访问树。
您可以在目录树中的每个文件上调用_access函数。但是仍然有人可以在检查文件后锁定文件。
使用重新启动管理器将告诉您是否有任何文件正在使用并提供关闭它们。但是,没有什么可以防止在您检查后锁定它们的竞争条件。