2014-09-04 56 views
0

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

当试图重命名手动通过系统我得到一个消息框,说和重命名程序失败“因为在它的文件夹/文件在另一程序中打开无法完成的动作”。

我得到了这些类似的错误,但没有解决:

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

请帮助我的决议。

回答

0

这是讨论here

后试图天QFileSystemWatcher的错误,我终于能够通过使用Win32 API观看在Windows平台上的目录来寻找我的问题的解决方案。我写了一篇关于如何使用Win32 Api来监视目录更改的博客文章。我想分享链接,这样可以帮助其他人在此寻找解决同样问题的方法。 Win32 API to monitor Directory Changes