我正在使用QFileSystemWatcher递归地监视一个目录。如果正在监视父目录的子目录,我无法以编程方式或手动地重命名/删除父目录。
当试图通过系统手动重命名时,我会收到一个消息框,上面写着“无法完成操作,因为其中的文件夹/文件是在另一个程序中打开的”,并且在以编程方式重命名时失败。
我也有类似的错误,但没有解决办法:
http://qt-project.org/forums/viewthread/10530
https://bugreports.qt-project.org/browse/QTBUG-7905
我没在看。然后..。如上述链接所述,但目录仍被锁定。
如果以编程方式重命名..。我尝试了一个解决方法: 1.在重命名父目录之前,从观察者中删除所有子目录路径。2.重命名父母。3.再次添加子目录路径。
但在这里,我的程序在第一步就失败了。当试图删除子目录路径时,QFileSystemWatcher::removePath()返回false,而QFileSystemWatcher::directory ()则在正在监视的路径中显示该目录。与在此发布的https://bugreports.qt-project.org/browse/QTBUG-10846相同
由于步骤1在这里失败,步骤2也会失败,因此我不能重命名父dir。
我正在使用Qt5.2.1和Windows 7。
请帮我下个决心。
发布于 2014-09-26 07:22:48
这是QFileSystemWatcher中的一个bug,如所讨论的这里
经过几天的尝试,我终于能够通过使用Windows来监视Win32平台上的目录,找到解决问题的方法。我写了一篇关于如何使用Win32 Api监视目录变化的博客文章。我想与大家分享这个联系,这样可以帮助其他人找到解决同样问题的方法。监视目录更改的Win32 API
https://stackoverflow.com/questions/25658123
复制相似问题