Défi : Lire les deux dernières lignes d'un gros fichier journal sans charger l'intégralité du fichier en mémoire, en répétant ce processus toutes les 10 secondes.
Fonction Stat :Pour éviter de charger l'intégralité du fichier en mémoire, la longueur du fichier peut être obtenue à l'aide de la fonction Stat() du package os. Ceci fournit la taille du fichier en octets.
Recherche ou lecture avant :
Considérez l'exemple fourni dans votre question :
Extrait de code :
package main import ( "fmt" "os" "time" ) const MYFILE = "logfile.log" func main() { c := time.Tick(10 * time.Second) for _ = range c { readFile(MYFILE) } } func readFile(fname string) { file, err := os.Open(fname) if err != nil { panic(err) } defer file.Close() buf := make([]byte, 62) stat, statErr := file.Stat() if statErr != nil { panic(statErr) } start := stat.Size() - 62 _, err = file.ReadAt(buf, start) if err == nil { fmt.Printf("%s\n", buf) } }
Dans cet exemple :
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!