2012-02-14 9 views
1

QtでMacとWindows用のアプリケーションを開発しています。私はフォルダXの変更を監視しています。ファイルがどこかのフォルダXにコピーされると、lastModified()の日付が読み込まれます。 Windowsでは、ファイルの元のファイルの最終更新日が表示されます。しかし、MacではCurrent DateTimeを返します。ファイル名を変更すると、フォルダXにコピーされた後、WindowsとMacの両方で元のファイルの最終変更日が取得されます。Qt QFileInfo.lastModified()Mac OSXのバグ?

なぜMac上のQtは、ファイルのコピー時に現在のDateTimeを返し、ファイルの名前を変更した後に元のファイルの変更時刻を返しますか?

+0

WindowsとMacでもう少しテストを行ったところ、次のことがわかりました。監視されているフォルダにファイルをコピーすると、ファイルが1つだけ生成され、ファイルが作成されます。 OSがファイルの書き込みを終了すると、信号は出力されません。回避策はありますか? –

答えて

0

日付タイムスタンプは、上記のようにフォルダ監視システムを実装するのに十分な信頼性がありません。

私はMacとWindowsの両方で信頼できるフォルダ監視システムを作成するのに数ヶ月を費やしてきました。それぞれ異なる戦略を必要としていました。

on mac:各ファイルとフォルダは、iノード番号(<sys/stat.h>)で一意に識別できます。この番号は、フォルダ構造を変更して変更を判断するために使用できます。

win:windowsにもstatがありますが、この数値は維持されず、したがって使用できません。私は、Windows APIの一部であるReadDirectoryChangesを使用するソリューションを作成しました。