Go で、OS を使用してファイルにデータを書き込む場合.File の場合、書き込み後、ファイル ポインタはファイルの末尾に移動します。その後、同じファイル ポインターからデータを読み取ろうとすると、ファイル ポインターがまだファイルの最後にあるため、即座に io.EOF (ファイルの終わり) エラーが発生します。
書き込み後に同じファイル ポインターからデータを正常に読み取るには、Seek メソッドを使用してファイル ポインターをファイルの先頭にリセットする必要があります。サンプル コードを変更する方法は次のとおりです。
// Seek to the beginning of the file before reading _, err := f.Seek(0, 0) if err != nil { fmt.Println("Error", err) } // Read 10 times r := bufio.NewReader(f) for i := 0; i < 10; i++ { str, _, err := r.ReadLine() if err != nil { if err == io.EOF { fmt.Println("Done") return } fmt.Println("Error", err) } fmt.Println("Read", string(str)) }
Seek メソッドを追加すると、読み取り前にファイル ポインターがファイルの先頭にリセットされ、後続の読み取り操作で書き込みデータを取得できるようになります。 io.EOF エラー。
以上がGo で同じ os.File に書き込んだ後に読み取るときに io.EOF を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。