2011-04-30 107 views
3

如果我理解正確,大多數提供庫函數來檢索文件大小的編程語言都使用系統調用。但是,那麼系統究竟在做什麼呢?它依賴於文件系統嗎?尺寸信息是否存儲在某種文件頭中?操作系統如何計算文件大小?

回答

6

是的,這是依賴於文件系統,但很多文件系統做在大致相同的方式:每個文件,有存儲有關的元數據文件,包括其大小的硬盤驅動器上的塊。

對於Linux/UNIX中使用的許多文件系統,例如,該塊稱爲inode。請注意,inode實際上並不是文件的一部分,所以它不是一個頭文件;它存在於保留用於存儲元數據的盤的區域中,而不是文件數據。

NTFS上,Windows使用的文件系統中,文件大小數據存儲在主文件表中。這大致相當於Linux文件系統上的inode表。

+0

感謝很多細節=) – 2011-04-30 23:19:36

2

它存儲在文件的元數據中,您可以在POSIX系統上使用stat進行檢索。例如,元數據還包括文件上次修改或訪問的時間。

2

他們存儲在一個結構,稱爲索引節點:http://en.wikipedia.org/wiki/Inode

這包含所有文件的元數據;當你修改文件的內容(或者真的對它做任何事情)時,你的Inode會被更新。

+0

謝謝您的回答! – 2011-04-30 23:19:49