„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > ## Wie listet man Dateien in großen Verzeichnissen mit Go effizient auf?

## Wie listet man Dateien in großen Verzeichnissen mit Go effizient auf?

Veröffentlicht am 08.11.2024
Durchsuche:889

## How to Efficiently List Files in Large Directories with Go?

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.

Neuestes Tutorial Mehr>

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