Golang 计算目录大小:高效实现与代码示例
Golang 计算目录大小
在 Golang 中,可以使用 os 包和 filepath 包来计算目录的大小。
步骤:
- 使用
filepath.Walk函数遍历目录下的所有文件和子目录。 - 使用
os.FileInfo判断文件类型,并获取文件大小。 - 累加所有文件的大小,得到目录总大小。
代码示例:
package main
import (
'fmt'
'os'
'path/filepath'
)
func main() {
dir := '/path/to/directory' // 替换为你要计算大小的目录
totalSize := int64(0)
err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if !info.IsDir() {
totalSize += info.Size()
}
return nil
})
if err != nil {
fmt.Println('计算目录大小出错:', err)
return
}
fmt.Printf('目录 %s 的大小为 %d 字节\n', dir, totalSize)
}
使用方法:
- 将代码中的
/path/to/directory替换为你要计算大小的目录的路径。 - 保存代码为
.go文件,例如calculate_directory_size.go。 - 使用
go run calculate_directory_size.go命令运行代码。
代码解析:
filepath.Walk函数会遍历指定目录下的所有文件和子目录,并对每个文件或目录调用传入的回调函数。- 回调函数接收三个参数:
path: 当前文件或目录的路径。info: 当前文件或目录的信息,类型为os.FileInfo。err: 错误信息,如果有的话。
- 在回调函数中,我们使用
info.IsDir()判断当前文件是否为目录。如果不是目录,则累加info.Size()到totalSize中。 - 最后,打印出目录的总大小。
注意事项:
- 该代码仅计算文件的大小,不包括目录本身的大小。
- 对于符号链接,该代码会计算链接目标的大小,而不是链接本身的大小。
- 如果目录非常大,遍历所有文件和目录可能需要一些时间。
原文地址: https://www.cveoy.top/t/topic/fP4s 著作权归作者所有。请勿转载和采集!