In Go, wenn Daten in eine Datei mit OS geschrieben werden .File, der Dateizeiger wird nach dem Schreiben an das Ende der Datei verschoben. Wenn anschließend versucht wird, Daten aus demselben Dateizeiger zu lesen, tritt sofort ein io.EOF-Fehler (End of File) auf, da sich der Dateizeiger immer noch am Ende der Datei befindet.
Um nach dem Schreiben erfolgreich Daten aus demselben Dateizeiger zu lesen, müssen Sie den Dateizeiger mithilfe der Seek-Methode auf den Anfang der Datei zurücksetzen. So können Sie den Beispielcode ändern:
// 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)) }
Durch Hinzufügen der Seek-Methode wird der Dateizeiger vor dem Lesen auf den Anfang der Datei zurückgesetzt, sodass die nachfolgenden Lesevorgänge die geschriebenen Daten ohne Probleme abrufen können ein io.EOF-Fehler.
Das obige ist der detaillierte Inhalt vonWie vermeide ich „io.EOF' beim Lesen, nachdem ich in Go in dieselbe „os.File' geschrieben habe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!