ホームページ >バックエンド開発 >Golang >Go で大きなファイルの最後の行を 10 秒ごとに効率的に読み取るにはどうすればよいですか?

Go で大きなファイルの最後の行を 10 秒ごとに効率的に読み取るにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-14 16:56:02559ブラウズ

How to Efficiently Read the Last Lines of a Large File in Go Every 10 Seconds?

Go で大きなファイルの最後の行を 10 秒ごとに読み取る

大きなファイルを完全にロードせずに、その最後の数行を読み取る記憶力は難しいかもしれません。この記事では、Go でファイルの最後までシークして先を読み進めることでこれを実現する方法について説明します。

まず、Stat 関数を使用してファイルのサイズを確認します。 MYFILE という名前のファイルとシーク開始位置を指定すると、ReadAt 関数を使用してその位置から必要なバイト数を読み取ります。

stat, statErr := file.Stat()
if statErr != nil {
    panic(statErr)
}
start := stat.Size() - 62
_, err = file.ReadAt(buf, start)
fmt.Printf("%s\n", buf)

このメソッドを使用すると、末尾から指定したバイト数を読み取ることができます。

このプロセスを自動化するには、time.Tick チャネルを使用して 10 ごとに最後の行を読み取ることができます。秒:

c := time.Tick(10 * time.Second)
for now := range c {
    readFile(MYFILE)
}

要約すると、Stat と ReadAt を利用すると、メモリに過負荷をかけることなく、大きなファイルの最後の行を 10 秒ごとに効率的に読み取ることができます。

以上がGo で大きなファイルの最後の行を 10 秒ごとに効率的に読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。