LoginSignup
0
0

More than 3 years have passed since last update.

【Go言語】bufioのScanは65536バイトを超えると読み込まない?

Posted at

概要

  • bufioのScannerを使ったファイル読み込みはデフォルトでは1行の長さが65536バイトを超えた場合はエラーとなるので1行の最大長を設定しなければならない
  • bufioのScannerのエラーハンドリングを忘れない

やり方

  • 初期サイズを与えたbyte配列を生成する
  • Buffer関数にbyte配列と1行の最大長のサイズを設定する
  • エラーハンドリングを忘れがちなので注意する(これがないとなぜファイルが読めないのか気づけ無い)
scanner := bufio.NewScanner(fp)
buf := make([]byte, 65536) // 初期サイズ
scanner.Buffer(buf, 1048576) // 最大サイズ
for scanner.Scan() {
  log.Print(scanner.Text())
}
// エラーハンドリング
if err := scanner.Err(); err != nil {
  log.Printf("scanner. %v", err)
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0