"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ## ¿Cómo enumerar archivos de manera eficiente en directorios grandes con Go?

## ¿Cómo enumerar archivos de manera eficiente en directorios grandes con Go?

Publicado el 2024-11-08
Navegar:747

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

Listado eficiente de archivos en directorios grandes

La navegación programática por directorios con una gran cantidad de archivos puede plantear desafíos de rendimiento. Para superar estas limitaciones, es esencial comprender los mecanismos subyacentes de lectura de directorios en Go.

Evitar Readdirnames

El enfoque convencional de usar filepath.Walk se basa en ioutil. Funciones ReadDir y filepath.Glob, que devuelven fragmentos de archivos. Sin embargo, estas funciones sufren limitaciones de memoria cuando se trata de directorios excesivamente grandes.

En lugar de usar ReadDirnames, que opera en matrices almacenadas en búfer, considere los métodos Readdir o Readdirnames de bajo nivel directamente. Estos métodos permiten especificar un tamaño de lote (n) mayor que 0, lo que permite la recuperación de entradas de directorio en lotes.

Código de muestra

El siguiente fragmento de código demuestra cómo leer entradas de directorio usando 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())
    }
}

Al especificar un tamaño de lote suficiente (por ejemplo, 10000), puede procesar eficientemente listados de directorios grandes sin encontrar problemas de memoria.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3