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 サイトの他の関連記事を参照してください。