【问题标题】:QFileSystemWatcher locks directory on WindowsQFileSystemWatcher 在 Windows 上锁定目录
【发布时间】:2014-09-04 05:50:21
【问题描述】:

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

尝试通过系统手动重命名时,我收到一个消息框,提示“操作无法完成,因为其中的文件夹/文件已在另一个程序中打开”,并且以编程方式重命名失败。

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

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。

请帮助我解决问题。

【问题讨论】:

    标签: qt qt5.2 qfilesystemwatcher


    【解决方案1】:

    这是 QFileSystemWatcher 中的一个错误,正如 here 所讨论的那样

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-28
      • 2015-12-27
      • 2019-03-09
      • 2013-07-14
      • 2020-04-08
      • 2015-03-03
      相关资源
      最近更新 更多