
使用Go列出文件夹中的文件
在本文中,我解释了如何使用Go获取文件系统上的文件夹内的文件列表,该任务也称为树遍历。
您可以根据自己的目标使用两个方便的stdlib
函数。
我列出了3种方法: filepath.Walk
, ioutil.ReadDir
,os.File.Readdir
.
1. filepath.Walk
path/filepath
stdlib软件包提供了便捷的Walk功能。 但是它会自动扫描子目录,因此您需确保这是您想要的。
用法很简单:
filepath.Walk
接受指向根文件夹的字符串和WalkFunc
(具有签名的函数类型),每次扫描文件夹都会调用此函数。
os.FileInfo
类型的info
变量很重要,因为我们可以获得有关当前文件的许多信息:名称,大小,模式,修改时间(如果它是文件夹或文件)以及基础数据。
例如,我们可以通过添加来避免处理文件夹.
通过使用filepath.Ext
并传递文件路径,可以基于文件的扩展名将文件排除(或包括)到切片中:
我们可以使用以下命令存储文件名而不是文件路径
我们还可以在单独的闭包中定义WalkFunc
。 我们只需要传递一个指向访问文件的指针:
2. ioutil.ReadDir
filepath.Walk
很方便,但默认情况下也扫描子文件夹,这可能不是您想要的。
Go标准库还提供ioutil.ReadDir
.
ReadDir读取以dirname命名的目录,并返回按文件名排序的目录条目的列表。
这是文档中的一个示例。 ioutil.ReadDir
将文件夹路径作为字符串,并返回上面描述的os.FileInfo
的一部分。
3. os.File.Readdir
在标准备库内部,ioutil.ReadDir
被实现为
看代码得知,它会扫描目录名并按名称对文件进行排序。 如果您不需要排序,也可以使用
以上就是golang
中获取文件夹文件的三种用法.