2017-03-21 14 views
0

私は、最近追加されたファイルコンテンツをインデックスする必要があるgolangのプロジェクト(フレームbleveというフレームワークを使用しています)を手に入れています。最後の変更以来のファイルの内容。私の現在の回避策は、各ファイルの最後に索引付けされた位置を記録することです。索引付け処理中には、前の記録された位置から始まるファイル内容のみを取り出します。最後に変更してからファイルの内容を追加する方法

これにはライブラリや組み込みの機能があるのだろうか?誰もが同様に私の仕事の周りのより良いアイデアを持っている場合、私はそれを本当に感謝します

(任意の言語で仕事ができる、行くように制限する必要はありません)!

おかげ

答えて

0

:ここに行くにtailをエミュレートしようとするライブラリもあります。

ファイルは専用の追加されている場合は、あなただけのインデックス作成を停止した場所のオフセット、およびそこから起動最後を記録する必要があります。

変更が古いバイトを新しいバイト(画像の変更など)に置き換えている場合は、小さなチャックの計算チェックサムを考慮して、異なるチャンクチェックサム。

あなたはハッシュを計算するために行くの標準ライブラリにcryptoパッケージをチェックアウトすることができます。

変更は(ソースコードへの変更のような)テキストファイルへの行の挿入/削除されている場合は、多分差分アルゴリズムを使用して、違いを見つけることができます。 https://github.com/octavore/deltaのようなものです。

0

あなたはUnixライクなシステムで実行している場合は、あなただけtailを使用することができます。ファイルに従うように指定すると、プロセスはファイルの終わりに達した後も待機し続けます。プログラム内でos/execを呼び出して、Stdoutをプログラムにパイプすることができます。あなたのプログラムはそれから定期的にまたはブロックすることで読み込むことができます。ゴーでネイティブにこれを行うには、私は考えることができる

唯一の方法は、あなたがどのように説明したようなものです。これは、ファイルがどのように変化するかに依存しhttps://github.com/hpcloud/tail

関連する問題