os.Stat / Lstat的目录大小

时间:2015-11-08 11:17:38

标签: go operating-system

我们说我在目录上做os.Stat()

func main() {
    fi, _ := os.Stat("/tmp")
    println(fi.Size())
}

// 548
// Program exited.

https://play.golang.org/p/NIzGMHRYfi

[FileInfo].Size()值到底意味着什么?这不是文件大小,所以我猜猜文件的数量是多少?信息节点?我无法在任何地方找到明确的答案,所以也许有人可以启发我?

1 个答案:

答案 0 :(得分:2)

FileInfo提及

// length in bytes for regular files; system-dependent for others

所以它真的取决于执行环境 例如,请参阅“Where does ext4 store directory sizes?

在该示例中,目录统计大小返回4096字节 这是目录本身的实际大小,而不是它包含的内容。

  

stat命令不提供查询文件系统对象(目录或文件)大小以外的任何设施。

     

stat根本无法返回多个尺寸 - 因此它只能返回目录本身的大小,而不能返回其内容。
  当您拥有硬链接文件时,“包含内容的目录大小”也会变得不那么清晰。