12

生の C++/WinAPI で .Net の FileSystemWatcher アナログが必要です。FindFirstChangeNotification/FindNextChangeNotification を使用して自分でコードを書き始めようとしましたが、これを必要とするのはおそらく私が初めてではなく、誰かが喜んで共有してくれるだろうと思いました。

理想的には、次のように使用できるクラスが必要です。

FileWatcher fw;
fw.startWatching("C:\MYDIR", "filename.dat", 
     FileWatcher::SIZE | FileWatcher::LAST_WRITE,
     &myChangeHandler);
...
fw.stopWatching();

または、boost::signal のようなものを使用する場合は、さらに良いでしょう。ただし、標準ライブラリ、ブースト、生の WinAPI 以外に依存しないでください。ありがとう!

4

4 に答える 4

7

ReadDirectoryChangesW関数はどうですか?

http://msdn.microsoft.com/en-us/library/aa365465(VS.85).aspx

通知をバッファに保存するため、変更を見逃すことはありません(バッファがオーバーフローしない限り)

于 2010-01-21T22:05:38.767 に答える
5

ここにいくつかのパブリックドメインコードがあります。私の現在のプロジェクトはこれを使用しています(以前の開発者から継承)。それはかなりうまく機能しますが、不明な理由(そしておそらくこのコードが原因ではない)のために通知を見逃します。

ここでのWin32APIにはいくつかの制限があり、通知の欠落を回避することが困難/不可能であることに注意してください。APIの背景と疑わしい回避策はここにあります

于 2010-01-21T19:56:25.907 に答える
5

2021年の答え:

積極的に維持されている、以下にリストされているレポの分岐バージョン: https://github.com/SpartanJ/efsw

古い答え:

これはクロスプラットフォームのソリューションですが、Win32 のものを適切にラップする仕事をします: https://github.com/jameswynn/simplefilewatcher

于 2013-09-17T08:47:53.023 に答える