2012-02-14 73 views
1

我正在爲Qt開發一款適用於Mac和Windows的應用程序。我正在監視文件夾X的更改。當文件從某個位置複製到文件夾X時,我讀取了它的lastModified()日期。在Windows上,它顯示原始文件最後修改的文件日期,這是預期的。但是,在Mac上它返回當前日期時間。當我將文件重命名爲文件夾X後,我會在Windows和Mac上獲取原始文件的上次修改日期。Qt QFileInfo.lastModified()Mac OSX的bug?

那麼爲什麼Qt在Mac上返回當前日期時間,當文件被複制時,並且在我重命名文件後返回原始文件的修改時間?

+0

好的,在Windows和Mac上的更多測試中,我觀察到以下情況:將文件複製到正在觀看的文件夾中時,僅發出一個信號,即創建文件時。當操作系統完成寫入文件時,不會發出信號。有沒有解決方法? – 2012-02-14 23:40:14

回答

0

日期時間戳不足以實現文件夾監視系統,如上面所暗示的。

我已經花了幾個月在Mac和Windows上編寫可靠的文件夾監視系統。原來每個人都需要完全不同的策略。

on mac:每個文件和文件夾都可以用一個inode編號唯一標識(查看<sys/stat.h>),然後可以使用該編號來區分文件夾結構以確定更改。

on win:windows也有stat,但是這個數字不會持續,因此不能使用。我創建了一個使用ReadDirectoryChanges的解決方案,它是Windows API的一部分。