テキストファイルの末尾から、n行の文字列の一致を確認

お世話になっております。

ロボットで、とあるシステムにurlを登録し、その後に、システムに登録されているurl一覧をテキストファイルで
エクスポートするというシナリオを作っています。

その後確認のために、追加したurlが、システムに登録後のurl一覧に含まれるか確認もしたいと思っています。

ですが、一覧のurlの数が多すぎて、一行ずつ上から読み込んで一致を確認すると時間がかかりすぎてしまいます。

追加されるurlはテキストファイルの末尾に追加されていくことは分かっているので、最終n行のみ読み取る、または下からテキストファイルを読み込む方法を探しています。

ちなみにurlは一つずつ改行されてテキストファイルに格納されています。

お心当たりの方、ぜひご教授ください。

こんにちは

件数によっては力業でも良いように思えますが、
追加したテキストだけを読み込む処理は以下のような感じになると思います。

1.あらかじめ追加前のテキストファイル(仮にtest.log)の長さを取得しておきます。

originalLength = (new System.IO.FileInfo("test.log")).Length

2.システムへの追加処理を行います。

3.追加後のテキストファイル(仮にtest2.log)に対して以下の処理を行います。

fs = System.IO.File.OpenRead("test2.log")
fs.Seek(originalLength, System.IO.System.IO.SeekOrigin.Begin)
arrByte = fs.ReadToEnd
strAppendText = System.Text.Encoding.GetEncoding("shift_jis").GetString(arrByte)

3全体の処理を Try Catchで囲み、Finallyに fs.Close() を配置します。

Yochi様

お返事ありがとうございました。

ご教授いただいた内容で動かしたところ、問題なく動かすことができました。

ただ、ご指摘のように、今回作成するシナリオですと、処理時間があまり変わらなかったので、
今後のメンテナンスのしやすさを上から順に処理していくようにしようと思います。

今後もよろしくお願いいたします。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.