操作系统如何计算文件大小?

时间:2011-04-30 22:31:06

标签: file-io operating-system

如果我理解正确,大多数提供库函数来检索文件大小的编程语言都使用系统调用。但是,系统在幕后做了什么?它取决于文件系统吗?大小信息是否存储在某种文件头中?

3 个答案:

答案 0 :(得分:6)

是的,这是依赖于文件系统的,但许多文件系统以大致相同的方式执行:对于每个文件,硬盘上都有一个块,用于存储有关文件的元数据,包括其大小。

例如,对于Linux / UNIX中使用的许多文件系统,此块称为inode。请注意,inode实际上不是文件的一部分,所以它实际上不是标题;它存在于光盘的一个区域中,用于存储元数据,而不是文件数据。

NTFS上,Windows使用的文件系统,文件大小数据存储在主文件表中。这大致相当于Linux文件系统上的inode表。

答案 1 :(得分:2)

它存储在文件的元数据中,您可以在POSIX系统上使用stat检索它。例如,元数据还包括上次修改或访问文件的时间。

答案 2 :(得分:2)

它们存储在名为Inode的结构中:http://en.wikipedia.org/wiki/Inode

这包含所有文件的元数据;当您修改文件的内容(或实际上对其执行任何操作)时,您的Inode会更新。