Каталог списка в Go

Я пытался выяснить, как просто перечислять файлы и папки в одном каталоге в Go.

Я нашел filepath.Walk, но он автоматически попадает в подкаталоги, чего я не хочу. Все мои другие поиски не улучшились.

Я уверен, что эта функциональность существует, но ее было очень сложно найти. Дай мне знать, если кто-нибудь знает, где я должен смотреть. Спасибо.

Ответ 1

Вы можете попробовать использовать ReadDir в пакете io/ioutil. В документах:

ReadDir считывает каталог с именем dirname и возвращает список отсортированных записей каталога.

Результирующий фрагмент содержит os.FileInfo типы, которые предоставляют перечисленные ниже методы здесь. Вот базовый пример, который перечисляет имя всего в текущем каталоге (папки включены, но не специально отмечены - вы можете проверить, является ли элемент папкой с помощью метода IsDir()):

package main

import (
    "fmt"
    "io/ioutil"
     "log"
)

func main() {
    files, err := ioutil.ReadDir("./")
    if err != nil {
        log.Fatal(err)
    }

    for _, f := range files {
            fmt.Println(f.Name())
    }
}

Ответ 2

Еще проще, используйте path/filepath:

package main    

import (
    "fmt"
    "log"
    "path/filepath"
)

func main() {
    files, err := filepath.Glob("*")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(files) // contains a list of all files in the current directory
}

Ответ 3

ioutil.ReadDir - хорошая находка, но если вы нажмете и посмотрите на источник, вы увидите, что он вызывает метод Readdir of os.File. Если вы согласны с порядком каталогов и не нуждаетесь в сортировке списка, тогда этот метод Readdir вам нужен.