2015-11-08 27 views
0

比方說,我上的目錄做一個os.Stat()從os.Stat目錄的大小/ LSTAT

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

// 548 
// Program exited. 

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

到底是什麼意思代表[FileInfo].Size()價值?這不是文件大小,所以我猜想像文件數量?信息節點?我無法在任何地方找到明確的答案,所以也許有人可以啓發我?

回答

2

的FileInfo提到

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

所以這真的取決於執行環境。
參見例如「Where does ext4 store directory sizes?

在該示例中,目錄統計大小返回4096個字節。
這是目錄本身的實際大小,而不是它包含的內容。

stat命令不提供查詢除文件系統對象(目錄或文件)的大小以外的任何其他功能。

stat根本沒有辦法返回多個大小 - 所以它只能返回目錄本身的大小,而不是它的內容。
而且當你有硬鏈接的文件時,「目錄大小包括內容」也變得不太清晰。

+0

謝謝,很好的鏈接。再次在OSX上,所有尺寸都不相同。似乎在這裏返回一個非零的數字有點愚蠢,但嘿,我猜這個大小的值可能對某人有用。 – Dave