2014-09-04 54 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