Каталог списка в 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 вам нужен.