Effiziente Dateiliste in großen Verzeichnissen
Das programmgesteuerte Navigieren in Verzeichnissen mit einer großen Anzahl von Dateien kann zu Leistungsproblemen führen. Um diese Einschränkungen zu überwinden, ist es wichtig, die zugrunde liegenden Mechanismen zum Lesen von Verzeichnissen in Go zu verstehen.
Vermeiden von Readdirnames
Der herkömmliche Ansatz der Verwendung von filepath.Walk basiert auf dem ioutil. ReadDir- und filepath.Glob-Funktionen, die Dateiausschnitte zurückgeben. Allerdings leiden diese Funktionen an Speicherbeschränkungen, wenn sie mit übermäßig großen Verzeichnissen arbeiten.
Anstatt ReadDirnames zu verwenden, das auf gepufferten Arrays arbeitet, sollten Sie die Low-Level-Methoden Readdir oder Readdirnames direkt in Betracht ziehen. Diese Methoden ermöglichen die Angabe einer Stapelgröße (n) größer als 0 und ermöglichen so den Abruf von Verzeichniseinträgen in Stapeln.
Beispielcode
Der folgende Codeausschnitt demonstriert, wie Verzeichniseinträge mit Readdir:
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())
}
}
Durch Angabe einer ausreichenden Stapelgröße (z. B. 10.000) können Sie große Verzeichnislisten effizient verarbeiten, ohne dass Speicherprobleme auftreten.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3