Golang 计算目录大小

在 Golang 中,可以使用 os 包和 filepath 包来计算目录的大小。

步骤:

  1. 使用 filepath.Walk 函数遍历目录下的所有文件和子目录。
  2. 使用 os.FileInfo 判断文件类型,并获取文件大小。
  3. 累加所有文件的大小,得到目录总大小。

代码示例:

package main

import (
	'fmt'
	'os'
	'path/filepath'
)

func main() {
	dir := '/path/to/directory' // 替换为你要计算大小的目录

	totalSize := int64(0)
	err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
		if err != nil {
			return err
		}
		if !info.IsDir() {
			totalSize += info.Size()
		}
		return nil
	})

	if err != nil {
		fmt.Println('计算目录大小出错:', err)
		return
	}

	fmt.Printf('目录 %s 的大小为 %d 字节\n', dir, totalSize)
}

使用方法:

  1. 将代码中的 /path/to/directory 替换为你要计算大小的目录的路径。
  2. 保存代码为 .go 文件,例如 calculate_directory_size.go
  3. 使用 go run calculate_directory_size.go 命令运行代码。

代码解析:

  • filepath.Walk 函数会遍历指定目录下的所有文件和子目录,并对每个文件或目录调用传入的回调函数。
  • 回调函数接收三个参数:
    • path: 当前文件或目录的路径。
    • info: 当前文件或目录的信息,类型为 os.FileInfo
    • err: 错误信息,如果有的话。
  • 在回调函数中,我们使用 info.IsDir() 判断当前文件是否为目录。如果不是目录,则累加 info.Size()totalSize 中。
  • 最后,打印出目录的总大小。

注意事项:

  • 该代码仅计算文件的大小,不包括目录本身的大小。
  • 对于符号链接,该代码会计算链接目标的大小,而不是链接本身的大小。
  • 如果目录非常大,遍历所有文件和目录可能需要一些时间。
Golang 计算目录大小:高效实现与代码示例

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

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