Lecture des dernières lignes d'un fichier volumineux dans Go toutes les 10 secondes
Lecture des dernières lignes d'un fichier volumineux sans le charger entièrement dans la mémoire peut être un défi. Cet article explique comment y parvenir dans Go en recherchant jusqu'à la fin du fichier et en lisant vers l'avant.
Pour commencer, vous pouvez déterminer la taille du fichier à l'aide de la fonction Stat. Étant donné un fichier nommé MYFILE et une position de début de recherche, utilisez la fonction ReadAt pour lire le nombre d'octets souhaité à partir de cette position :
stat, statErr := file.Stat() if statErr != nil { panic(statErr) } start := stat.Size() - 62 _, err = file.ReadAt(buf, start) fmt.Printf("%s\n", buf)
Cette méthode vous permet de lire le nombre d'octets spécifié à partir de la fin du fichier, réduisant ainsi le besoin de charger l'intégralité du fichier en mémoire.
Pour automatiser ce processus, vous pouvez utiliser un canal time.Tick pour lire les dernières lignes toutes les 10 secondes :
c := time.Tick(10 * time.Second) for now := range c { readFile(MYFILE) }
En résumé, en utilisant Stat et ReadAt, vous pouvez lire efficacement les dernières lignes d'un fichier volumineux toutes les 10 secondes sans surcharger votre mémoire.
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!