Golang递归计算文件大小:快速获取目录总大小
Golang递归计算文件大小:快速获取目录总大小
在Golang中,我们可以利用递归函数高效地计算目录下所有文件的总大小。以下是完整的代码示例:gopackage main
import ( 'fmt' 'io/ioutil' 'os' 'path/filepath')
func main() { dir := '.' // 目录路径 totalSize := calculateSize(dir) fmt.Printf('Total size: %.2f MB ', float64(totalSize)/(1024*1024))}
func calculateSize(dir string) int64 { totalSize := int64(0)
fileInfos, err := ioutil.ReadDir(dir) if err != nil { fmt.Println('Failed to read directory:', err) return 0 }
for _, fileInfo := range fileInfos { if fileInfo.IsDir() { subDir := filepath.Join(dir, fileInfo.Name()) totalSize += calculateSize(subDir) // 递归调用计算子目录大小 } else { totalSize += fileInfo.Size() } }
return totalSize}
代码解释:
-
calculateSize函数: - 接收目录路径作为参数。 - 使用ioutil.ReadDir函数读取目录下的所有文件和子目录信息。 - 遍历每个文件和子目录: - 如果是子目录,递归调用calculateSize函数计算其大小,并将结果累加到totalSize。 - 如果是文件,直接将其大小累加到totalSize。 - 返回最终计算得到的totalSize。 -
main函数: - 设置目标目录路径。 - 调用calculateSize函数计算目录总大小。 - 格式化输出结果(转换为 MB)。
注意事项:
- 此代码示例仅计算文件大小,不包括目录本身的大小。- 如果需要计算目录大小,可以考虑将每个目录的大小(通常为 4096 字节)也累加到总大小中。
希望这篇简短的教程能够帮助你理解如何使用 Golang 递归计算文件大小。该方法可以应用于各种文件处理场景,例如计算磁盘空间占用、查找大文件等。
原文地址: https://www.cveoy.top/t/topic/fwfx 著作权归作者所有。请勿转载和采集!