QFileSystemWatcher锁定Windows上的目录

时间:2014-09-04 05:50:21

标签: qt qt5.2 qfilesystemwatcher

我正在使用QFileSystemWatcher递归地观看目录。如果正在监视其子目录,我无法以编程方式或手动方式重命名/删除父目录。

当尝试通过系统手动重命名时,我会得到一个消息框说“"操作无法完成,因为其中的文件夹/文件是在另一个程序中打开的”#34;并且以编程方式重命名它失败。

我遇到了类似的错误,但没有解决方案:

http://qt-project.org/forums/viewthread/10530

https://bugreports.qt-project.org/browse/QTBUG-7905

我不是在看。和..如上面的链接所说,但目录仍然被锁定。

如果以编程方式重命名..我尝试了一种解决方法: 1.在重命名父级之前,从观察程序中删除所有子目录路径。 2.重命名父级。 3.再次添加子目录路径。

但是我的程序在第一步也失败了。尝试删除子目录路径时,QFileSystemWatcher :: removePath()返回false,QFileSystemWatcher :: directories()在正在监视的路径中显示该目录。与此处https://bugreports.qt-project.org/browse/QTBUG-10846

相同

由于步骤1在此失败,步骤2也失败,我无法重命名父目录。

我正在使用Qt5.2.1和Windows 7。

请帮我解决问题。

1 个答案:

答案 0 :(得分:0)

这是QFileSystemWatcher中的一个错误,如here

所述

经过几天的尝试,我终于能够通过使用Win32 API在Windows平台上查看目录来找到问题的解决方案。我写了一篇关于如何使用Win32 Api来监控目录更改的博客文章。我想分享这个链接,这样可以帮助那些登陆这里的人找到同样问题的解决方案。 Win32 API to monitor Directory Changes