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}

代码解释:

  1. calculateSize 函数: - 接收目录路径作为参数。 - 使用 ioutil.ReadDir 函数读取目录下的所有文件和子目录信息。 - 遍历每个文件和子目录: - 如果是子目录,递归调用 calculateSize 函数计算其大小,并将结果累加到 totalSize。 - 如果是文件,直接将其大小累加到 totalSize。 - 返回最终计算得到的 totalSize

  2. main 函数: - 设置目标目录路径。 - 调用 calculateSize 函数计算目录总大小。 - 格式化输出结果(转换为 MB)。

注意事项:

  • 此代码示例仅计算文件大小,不包括目录本身的大小。- 如果需要计算目录大小,可以考虑将每个目录的大小(通常为 4096 字节)也累加到总大小中。

希望这篇简短的教程能够帮助你理解如何使用 Golang 递归计算文件大小。该方法可以应用于各种文件处理场景,例如计算磁盘空间占用、查找大文件等。

Golang递归计算文件大小:快速获取目录总大小

原文地址: https://www.cveoy.top/t/topic/fwfx 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录