在GO语言中获取实际文件大小和表面文件大小。

huangapple go评论145阅读模式
英文:

Get the actual file size vs apparent size in GO

问题

"fs.sys.Size"(其中fs是os包中的fileStat)返回文件的表面大小。这在处理稀疏文件时并不理想。

在Go语言中有没有一种方法可以获取实际的文件大小?或者所有应用程序都必须获取将空块表示为实际块的转换后的元数据?

英文:

"fs.sys.Size" (fs being fileStat in the os package) returns the apparent size of a file. This isn't ideal when dealing with sparse files.

Is there a way to get the actual file size in GO? Or all applications are bound to get the converted metadata that represent empty blocks as real ones?

答案1

得分: 4

看起来你只需要使用来自Syscall包的stat/fstat调用来填充Stat_t结构体,然后将Blocks乘以512以获取所占用的磁盘空间。

Stat_t结构体:https://golang.org/pkg/syscall/#Stat_t
Syscall包:https://golang.org/pkg/syscall/

英文:

Looks like the Stat_t structure filled using stat/fstat calls from the Syscall package is all you need. Just multiply Blocks by 512 to get the disk space consumed.

huangapple
  • 本文由 发表于 2016年11月25日 06:53:25
  • 转载请务必保留本文链接:https://go.coder-hub.com/40795488.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定