Golang 计算文件大小:递归统计目录大小(排除子目录)
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}
使用说明
- 将代码中的
/path/to/directory替换为实际的目录路径。2. 运行代码,即可计算目录中所有文件的大小,并排除子目录的大小。
代码解释
calculateDirSize函数接收一个目录路径作为参数,并返回该目录下所有文件的大小。2. 函数首先使用os.Stat获取目录的信息,并判断是否为目录。3. 如果是目录,则使用os.ReadDir读取目录中的所有文件和子目录。4. 遍历读取到的文件信息,使用fileInfo.IsDir()判断是否为目录,如果是则跳过,否则累加文件大小到totalSize中。5. 最后返回计算得到的总大小totalSize。
希望本文能帮助你理解如何使用 Golang 递归计算目录中所有文件的大小,并排除子目录大小。
原文地址: https://www.cveoy.top/t/topic/fwfu 著作权归作者所有。请勿转载和采集!