Maison > développement back-end > Golang > le corps du texte

Comment lire un fichier à partir d'un numéro de ligne spécifique à l'aide du scanner dans Go ?

Mary-Kate Olsen
Libérer: 2024-11-06 15:03:03
original
784 Les gens l'ont consulté

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

Lecture d'un fichier à partir d'un numéro de ligne spécifique à l'aide du scanner

Dans Go, le package bufio.Scanner fournit un moyen pratique de lire des fichiers ligne par ligne. Cependant, par défaut, Scanner ne propose pas de méthode pour ignorer ou lire un numéro de ligne spécifique. Pour y parvenir, nous devons modifier le comportement par défaut du scanner.

Solution étendue avec fonction de séparation de jetons personnalisée

Nous pouvons étendre le scanner en créant une fonction de division personnalisée qui détermine les limites des lignes et maintient la position du fichier. Définissons une fonction de fractionnement qui renvoie l'avance en octets jusqu'au prochain saut de ligne et la ligne comme jeton :

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
}
Copier après la connexion

Ensuite, nous pouvons utiliser la méthode Scanner.Split pour définir notre fonction de fractionnement personnalisée :

scanner := bufio.NewScanner(inputFile)
scanner.Split(scanLinesWithPosition)
Copier après la connexion

Gestion de la position de la ligne

Avec la fonction de division personnalisée en place, nous pouvons lire les lignes tout en conservant la position du fichier. Voici une version modifiée de votre code existant :

// ... (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)
}
Copier après la connexion

Maintenant, le code lit les lignes, saute les lignes déjà traitées (en fonction de la variable de progression) et conserve le numéro de ligne actuel. En ajustant la valeur de progression, vous pouvez contrôler le numéro de la ligne de départ.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!