読書とプログラミングを中心とした覚書ブログ

読書とプログラミングについて、日々経験したことを忘れないようにするため、極力ブログに記録を残すように頑張る。

Auto Hot Keyでファイル最終行を高速表示(tailコマンド相当)

 公開日   

horse-692128-2

最近始めたAuto Hot Keyを使ったプログラミングを書いていますが、困ったことにファイル末尾を取得する方法が確立されていないという事実を知りました。
今回は、WEB検索で幾つか見た実装方法を参考に、更に改善できているであろう方法を整理してみたのでまとめたいと思います。

WEBで紹介されていた実装例

Googleで「ahk tail」「ahk last line」などで検索したところ、だいたい次に紹介されている実装例を見つけました。

ファイル全体を読み取り、該当行数を返却する

一番多い実装です。例えばこちらにて紹介。
最も検索にヒットする、とてもシンプルでわかりやすい方法ですが、ファイル全体を読むので間違えてバイナリファイルを指定してしまった場合や、バイナリファイル並みの巨大なテキストファイル、というような場合に処理時間がかかるかと思います。

ファイルポインタを移動させて1文字づつ読み取り

先ほどと同じこちらで紹介。
ファイルポインタの移動は巨大なファイルだと効率が上がるのですが、1文字づつ読んでいるのが惜しくも劣化の要因。

ファイルポインタを移動させて全体読み取り

こちらで紹介。
個人的には好みの実装ですが、1行の文字数が重要にも関わらず固定値で持たせないといけない実装であるが故に、実際のファイルとの乖離が大きいと誤動作するようです。

改善版を作ってみた

これまで紹介されていた実装例では欲しい実装が今ひとつのところで引き当てることが出来なかったので、これらを参考に自作してみました。
良いと思ったファイルポインタの移動(seek)を活用し、さらに1度に読み取るサイズを多め(デフォルト512バイト)に確保。
さらに規定行数を検出できない場合にはエラー相当である空文字を返却する動作です。

最後の2行が使用方法のサンプルで実行結果はシンプルなメッセージボックスへの記載。

tail

最後に

結局WEB検索したけど欲しいサンプルコードがなかったので自作しましたが、数10行程度だから検索方法が良くなかったのかもしれません。

 

レスポンシブ広告

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.

  関連記事

Auto Hot Keyで簡単にGUIフォームアプリを作る

巷でお手軽プログラミングが楽しめると好評のAuto Hot Keyを体験してみま …

Auto Hot Keyでファイル最終行を高速表示(tailコマンド相当)