1

私のプロジェクトでfs.watchFileは、テキスト ファイルの変更を聞くために使用しています。

要件 最後に更新されたデータのみを読み取る

注意テキストファイルのデータは常に追加され、削除されません。

サンプルコード

fs.watchFile(config.filePath, function (curr, prev) {
        fs.readFile(config.filePath, function (err, data) {
              if (err) throw err;
            console.log(data);
        });
 });

上記のコードは、ファイルが変更されたときにテキスト ファイル全体を読み取ります。

どんな提案も素晴らしいでしょう。

作業コード

fs.watchFile(config.filePath, function (curr, prev) {
var filestream = fs.createReadStream(config.filePath,{start:prev.size,end:curr.size,encoding:"utf-8");
    filestream.on('data', function (data) {
         console.log(data);
  });
});
4

1 に答える 1

1

ファイルの stat オブジェクトを操作できます。curr オブジェクトと prev オブジェクトはどちらもStat s オブジェクトであり、"size" という属性を持っています。

常にファイルの先頭または末尾にデータを追加していると思います。そうしないと、データがどこに追加されたかを知る方法がありません。

prev.size と curr.size の差は、追加されたバイト数を示します。readFile -Functionに start 属性と end 属性を持つオプション オブジェクトを指定します。

例: 常に最後に追加すると、次のような呼び出しを行うことができます。

fs.readFile(config.filePath, {start: prev.size}, function ...);

最初に追加する場合:

fs.readFile(config.filePath, {start: 0, end: (curr.size-prev.size)}, function ...);

それが役立つことを願っています!

于 2013-06-19T09:25:40.403 に答える