Golang 计算文件大小:递归统计目录大小(排除子目录)

本文将介绍如何使用 Golang 递归计算目录中所有文件的大小,并排除子目录大小。

代码示例gopackage main

import ( 'fmt' 'os')

func main() { dir := '/path/to/directory' size, err := calculateDirSize(dir) if err != nil { fmt.Println('Error:', err) } else { fmt.Println('Total size:', size) }}

func calculateDirSize(dir string) (int64, error) { info, err := os.Stat(dir) if err != nil { return 0, err }

if !info.IsDir() {		return 0, fmt.Errorf('%s is not a directory', dir)	}

totalSize := int64(0)

fileInfos, err := os.ReadDir(dir)	if err != nil {		return 0, err	}

for _, fileInfo := range fileInfos {		filePath := dir + '/' + fileInfo.Name()		fileInfo, err := os.Stat(filePath)		if err != nil {			return 0, err		}

	if fileInfo.IsDir() {			// 跳过子目录			continue		} else {			totalSize += fileInfo.Size()		}	}

return totalSize, nil}

使用说明

  1. 将代码中的 /path/to/directory 替换为实际的目录路径。2. 运行代码,即可计算目录中所有文件的大小,并排除子目录的大小。

代码解释

  1. calculateDirSize 函数接收一个目录路径作为参数,并返回该目录下所有文件的大小。2. 函数首先使用 os.Stat 获取目录的信息,并判断是否为目录。3. 如果是目录,则使用 os.ReadDir 读取目录中的所有文件和子目录。4. 遍历读取到的文件信息,使用 fileInfo.IsDir() 判断是否为目录,如果是则跳过,否则累加文件大小到 totalSize 中。5. 最后返回计算得到的总大小 totalSize

希望本文能帮助你理解如何使用 Golang 递归计算目录中所有文件的大小,并排除子目录大小。

Golang 计算文件大小:递归统计目录大小(排除子目录)

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

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