我一直在想,如何在Go中简单地列出单个目录中的文件和文件夹.

我找到了filepath.Walk个,但它会自动进入子目录,我不想这样.我所有的其他搜索都没有找到更好的结果.

我确信这个功能是存在的,但是真的很难找到.如果有人知道我应该go 哪里找,请告诉我.谢谢.

推荐答案

您可以try 使用io/ioutil包中的ReadDir函数.根据文件:

ReadDir读取由dirname命名的目录,并返回已排序目录条目的列表.

得到的切片包含os.FileInfo种类型,它们提供了列出的here种方法.下面是一个基本示例,它列出了当前目录中所有内容的名称(包括文件夹,但没有特殊标记-您可以使用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())
    }
}

Go相关问答推荐

Golang读写更接近于io.File

Go协议缓冲区导入问题

难以为多个平台添加Go Bazel构建选项

错误.如果它包含切片,则返回FALSE

ChromeDriver不存在(高朗selenium)

Go Regexp:匹配完整的单词或子字符串,或者根本不匹配

Go Colly-访问for循环中的URL

如何防止程序B存档/删除围棋中程序A当前打开的文件?

当我有外键时,如何使用 GORM 创建数据库的新条目

Golang text/template中的startswith函数 - 入门教程

如何使用名称具有包名称的嵌套 struct 启动 go struct

Go 的垃圾收集器在使用时删除 ZeroMQ 套接字

将shell输出绑定到Go中的 struct 的最佳方法?

为什么我不能使用来自 gocloak 中 Login() 的访问令牌在 KeyCloak 中创建新客户端?

Unescape 在 rss 中两次逃脱了标题

如何在gorm中处理多个查询

行之间的模板交替设计

Go:为一组单个结果实现 ManyDecode

手动下载并放置一个 golang mod 文件

Golang LinkedList 删除第一个元素