Wie lese ich eine Datei mit einer bestimmten Zeilennummer mithilfe des Scanners in Go?

Mary-Kate Olsen
Freigeben: 2024-11-06 15:03:03
Original
829 Leute haben es durchsucht

How to Read a File from a Specific Line Number Using Scanner in Go?

Eine Datei ab einer bestimmten Zeilennummer mit dem Scanner lesen

In Go bietet das bufio.Scanner-Paket eine praktische Möglichkeit, Dateien Zeile für Zeile zu lesen. Standardmäßig bietet der Scanner jedoch keine Methode zum Überspringen oder Lesen einer bestimmten Zeilennummer. Um dies zu erreichen, müssen wir das Standardverhalten des Scanners ändern.

Erweiterte Lösung mit benutzerdefinierter Token-Split-Funktion

Wir können den Scanner erweitern, indem wir eine benutzerdefinierte Split-Funktion erstellen, die die Liniengrenzen bestimmt und behält die Dateiposition bei. Definieren wir eine Teilungsfunktion, die den Fortschritt in Bytes zum nächsten Zeilenumbruch und die Zeile als Token zurückgibt:

func scanLinesWithPosition(data []byte, atEOF bool) (advance int, token []byte, err error) {
    advance, token, err = bufio.ScanLines(data, atEOF)
    return // Advance and Token are calculated
}
Nach dem Login kopieren

Als nächstes können wir die Scanner.Split-Methode verwenden, um unsere benutzerdefinierte Teilerfunktion festzulegen:

scanner := bufio.NewScanner(inputFile)
scanner.Split(scanLinesWithPosition)
Nach dem Login kopieren

Verarbeitung der Zeilenposition

Mit der benutzerdefinierten Teilungsfunktion können wir Zeilen lesen und gleichzeitig die Dateiposition beibehalten. Hier ist eine modifizierte Version Ihres vorhandenen Codes:

// ... (Code from your post)

func main() {
    // ... (Code from your post)

    scanner := bufio.NewScanner(inputFile)
    scanner.Split(scanLinesWithPosition)

    var currentLine int
    for scanner.Scan() {
        currentLine++
        if currentLine > progress {
            fmt.Println(scanner.Text())
        }
    }

    // ... (Code from your post)
}
Nach dem Login kopieren

Jetzt liest der Code Zeilen, überspringt bereits verarbeitete Zeilen (basierend auf der Fortschrittsvariablen) und behält die aktuelle Zeilennummer bei. Durch Anpassen des Fortschrittswerts können Sie die Startzeilennummer steuern.

Das obige ist der detaillierte Inhalt vonWie lese ich eine Datei mit einer bestimmten Zeilennummer mithilfe des Scanners in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage