2016-04-28 4 views
2

com-portからデータを継続的に取得してファイルに取り込むサードパーティのツールによって更新されているファイルにアクセスしています。 このファイルには、データが入力されている間、私は内容をチェックしたり、自分の目的のステータスを記録したりしたいと思っていました。FileInfo.lengthとFile.ReadAllText

そして、私は、ファイルの長さを知っていると私はまた、必須キーワードは、(継続的に更新されている)ファイルで提供されているかどうかを確認するためにFile.ReadAllText(Filename).Contains(SearchText)を使用するFileInfo.Length操作を使用してチェックを行うため。 実行中のファイルにFileInfo.LengthFile.ReadAllTextを使用すると、サードパーティのツールによる更新操作に影響するかどうかを問い合わせることができます。 これらのチェックの結果、サードパーティのツールによって更新されるファイルにデータが失われることはありませんか?

また、このファイルの更新の遅延などの影響がありますか?

+0

はい、これはかなり可能性があります。 File.ReadAllText()はファイルへの書き込みを禁止するファイルにロックを設定します。 FileShare.ReadWriteで開かれたFileStreamを使用してStreamReaderに渡す必要があります。それはまたかなり高価な操作であり、そのようなファイルは非常に大きくなる可能性があり、最終的にDOS攻撃に変わります。 –

+0

私はあなたが私の2番目の質問に答えていると仮定しています(また、このファイルの更新などの遅れのような影響もありますか?)...その場合、File.ReadAllTextによってロックが解除されたときに少なくとも、 thirdpartyツールはファイルの更新を(データの損失なしに)続けることができますか?遅れは良いがデータの損失ではない – giboo

答えて

3

他のプロセスが書き込み中にファイルを読み込んでも安全です。そのプロセスには書き込みロックが設定され、プロセスには読み取りロックが設定されます。

また、このファイルの更新の遅延などの影響もありますか?

は、書き込みプロセスのパフォーマンスに影響します。ストレージのIOPSを考慮してください。ストレージが過負荷になっていると、それを使って行うすべての操作が書き込みプロセスと競合し、潜在的に速度が低下します。

1

短い答え、第

読み取り専用操作は、他の書き込み動作には影響を与えません。

関連する問題