- 我需要编写一个函数,当给定一个文件夹的路径时,它会扫描以该文件夹为根的文件。
- 然后我需要显示该文件夹的目录结构。
我知道怎么做 2(我打算使用 jstree 在浏览器中显示它)。
原文由 chinmay 发布,翻译遵循 CC BY-SA 4.0 许可协议
下面是获取目录中文件的文件信息的方法。
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
dirname := "." + string(filepath.Separator)
d, err := os.Open(dirname)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer d.Close()
fi, err := d.Readdir(-1)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
for _, fi := range fi {
if fi.Mode().IsRegular() {
fmt.Println(fi.Name(), fi.Size(), "bytes")
}
}
}
原文由 peterSO 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答1.3k 阅读
2 回答1.2k 阅读
2 回答1.2k 阅读
2 回答1.2k 阅读
3 回答790 阅读
2 回答958 阅读
1 回答845 阅读
编辑 1.16 :仍然有足够多的人回答这个答案,我想我会为 Go 1.16 更新它。
Go 1.16 中引入的函数 filepath.WalkDir 比之前编辑中提到的 filepath.Walk 具有更好的性能。这是一个工作示例:
编辑:仍然有足够多的人回答这个问题,我想我会为 Go1 API 更新它。这是 filepath.Walk() 的一个工作示例。原文如下。
请注意 filepath.Walk 递归地遍历目录树。
这是一个示例运行:
原始答案如下: 自 weekly.2011-09-16 起,遍历文件路径的界面已更改,请参阅 http://groups.google.com/group/golang-nuts/msg/e304dd9cf196a218 。下面的代码在不久的将来将不适用于 GO 的发布版本。
标准库中实际上有一个函数专门用于此: filepath.Walk 。