下面是一个使用递归方式计算目录中所有文件大小的示例代码:

package main

import (
	"fmt"
	"io/ioutil"
	"os"
	"path/filepath"
)

func main() {
	dir := "." // 目录路径
	totalSize := calculateSize(dir)
	fmt.Printf("Total size: %.2f MB\n", 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
}

此代码使用 ioutil.ReadDir 函数读取指定目录下的文件和子目录的信息,然后遍历每个文件和子目录。如果遇到子目录,就递归调用 calculateSize 函数计算子目录的大小,并将结果累加到总大小中。如果遇到文件,就将文件大小累加到总大小中。最后,返回总大小。

请注意,此代码只计算文件的大小,不包括目录的大小。如果要计算目录的大小,可以通过添加目录的大小(通常是4096字节)来实现。

golang 递归累加目录中所有文件的大小

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

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