非常に頻繁にログ ファイルにテキスト行を書き込む必要があるプログラムがあります。ログ ファイルの行数を 1000 に制限したいと思います。ファイルに行を書き込むと、通常どおり追加されます。ファイルが 1000 行に達したら、最初の行を取り除き、新しい行を追加したいと思います。毎回ファイル全体を書き換えずにこれを行う方法があるかどうかは誰にもわかりませんか?
1284 次
5 に答える
0
ログを記録したいときはいつでも、ファイルを開き、書き込みインデックスを読み取り、その位置にジャンプして、固定幅のログ エントリを書き込むことができます。インデックスが上限に達したら、単純に 0 に戻します。
ただし、これには多くの警告があります-最初に、適切なログエントリ(ファイルを閉じていると仮定)ごとに、開く、読み取り、シーク、書き込み、シーク、書き込み、および閉じる必要があるということです-インデックスを見つけるには、そこに移動し、新しいエントリを作成してから、インデックスを更新します。また、固定サイズのデータ要素を書き込む固有の問題もあります。また、人間の読者は、ファイルの「始まり」がどこにあるかを知るためにコンテンツに依存します。ほとんどの人は、「行 1」が最初の行であると考えています。
私は単純にいくつかのファイルを「ローリング」して、各ファイルの一貫性を維持することを強く支持しますが、固定行数のファイルが 1 つだけ必要な場合は、循環バッファーのアイデアが機能します。
于 2013-10-08T21:26:02.213 に答える