Liste efficace des fichiers dans les grands répertoires
La navigation par programmation dans des répertoires contenant un grand nombre de fichiers peut poser des problèmes de performances. Pour surmonter ces limitations, il est essentiel de comprendre les mécanismes de lecture de répertoire sous-jacents dans Go.
Éviter les noms de répertoires
L'approche conventionnelle d'utilisation de filepath.Walk s'appuie sur ioutil. Fonctions ReadDir et filepath.Glob, qui renvoient des tranches de fichiers. Cependant, ces fonctions souffrent de limitations de mémoire lorsqu'elles traitent des répertoires trop volumineux.
Au lieu d'utiliser ReadDirnames, qui fonctionne sur des tableaux tamponnés, considérez directement les méthodes Readdir ou Readdirnames de bas niveau. Ces méthodes permettent de spécifier une taille de lot (n) supérieure à 0, permettant la récupération des entrées de répertoire par lots.
Exemple de code
L'extrait de code suivant montre comment lire les entrées de répertoire à l'aide de Readdir :
<code class="go">package main import ( "fmt" "io/ioutil" "os" ) func main() { files, err := ioutil.ReadDir("directory_path") if err != nil { fmt.Println(err) return } for _, file := range files { fmt.Println(file.Name()) } }</code>
En spécifiant une taille de lot suffisante (par exemple, 10 000), vous pouvez traiter efficacement de grandes listes de répertoires sans rencontrer de problèmes de 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!