大型目录中的高效文件列表
以编程方式导航包含大量文件的目录可能会带来性能挑战。为了克服这些限制,必须了解 Go 中的底层目录读取机制。
避免 Readdirnames
使用 filepath.Walk 的传统方法依赖于 ioutil。 ReadDir 和 filepath.Glob 函数,返回文件片段。然而,这些函数在处理过大的目录时会受到内存限制。
不要使用在缓冲数组上操作的 ReadDirnames,而是直接考虑低级 Readdir 或 Readdirnames 方法。这些方法允许指定大于 0 的批量大小 (n),从而能够批量检索目录条目。
示例代码
以下代码片段演示如何使用 Readdir 读取目录条目:
package main
import (
"fmt"
"io/ioutil"
"os"
)
func main() {
files, err := ioutil.ReadDir("directory_path")
if err != nil {
fmt.Println(err)
return
}
for _, file := range files {
fmt.Println(file.Name())
}
}
通过指定足够的批处理大小(例如 10000),您可以有效地处理大型目录列表,而不会遇到内存问题。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3