2

Windowsマシンでプレーンテキストファイルの変更を監視したい。外部アプリケーションがファイルを更新するときはいつでも、私のアドオンはそれを読み取り、それに応じて動作することになっています。

かなりの量のドキュメントを調べても、Firefoxでこれを行うための直接的な機能を見つけることができませんでした。そこで、次のようなアプローチを思いつきました。

提案してください。

アプローチ1-whileループで{
a)監視対象のディレクトリ内のすべてのファイルを一覧表示します/ nsIFile.exists()を使用
しますb)ファイルが存在する場合は次のステップに進み、そうでない場合はスリープし
ますc)「nsIFile」インターフェイスを使用してファイルの属性「lastModifiedTime」を作成し、最初に保存された値と比較します
。d)1秒間スリープします。
このファイルを読み取るためにNetUtil.asyncFetch
()を使用するつもりです。障害となるのは、a)セキュリティのバイパスb)メインスレッドで呼び出されたときにパフォーマンスが低下することです。
これは本当の意味で非同期ではありませんが..これを「ChromeWorker」スレッドで.jsと呼ぶことができます

上記のアプローチを試しました..
しかし私は眠ることができませんでした..眠る方法がないようです..setTimeOut()は私を助けませんでした

アプローチ2-
少し遠いですが、これが機能するかどうかはわかりません:)
ファイルが存在する場合は、「nsIFile」を「nsIInputStreamPump」として開きます

4

2 に答える 2

4

ファイルの変更に関する通知を受け取るための組み込みAPIはありません。ただし、 js-ctypesを使用してOS関数を直接呼び出すことはできます。したがって、Windowsでは、そこで関数ChromeWorkerを作成して呼び出します。次に、次の呼び出しでループを使用します。FindFirstChangeNotification

そして、あなたが見終わったらあなたは電話をするべきFindCloseChangeNotificationです。

于 2012-07-16T06:35:14.510 に答える
0

私は間違っているかもしれませんが、これはある種のポーリングアプローチなしでは実行できないと確信しています(つまり、ファイルを一定の間隔で、または使用する直前にチェックします)。

于 2012-07-15T21:25:09.540 に答える