Windows中“大小”和“占用空间”的区别

“大小”比“占用空间”小

磁盘上最小的物理存储单元是“扇区(Sector)”。由于寻址能力有限,文件系统并不直接操作扇区。文件系统中,最小的可操作单位是“簇(Cluster)”。一个簇由相邻的几个扇区组成。

存储文件时,文件系统会分配足够数量的簇,使其恰好能容下文件。文件属性中的“大小”指的是文件本身的大小,“占用空间”则是文件占用的簇的大小总和。

为了更好地管理磁盘空间和更高效地读写数据,一个簇只能包含一个文件的内容。所以,当一个文件的大小不是簇的大小的整数倍时,最后一个簇的空间无法被完全利用,“大小”就会小于“占用空间”。它们的差值也就是最后一个簇中浪费掉的空间的大小。通常来说,大多数的文件大小都不是簇的大小的整数倍,因此“大小”一般都比“占用空间”小。

“大小”比“占用空间”大

当然也存在一些特殊情况,“大小”会比“占用空间”大。

小文件(占用空间为零)

在 NTFS 文件系统中,有一个主文件表(MFT,Master File Table)。它会给每个文件分配一个固定大小的空间,用来记录文件的信息,包括文件的名称、属性、存储文件的簇的位置。如果一个文件足够小,小到这个空间也能容得下它,文件系统就不会为其分配簇,而是直接将其内容存在 MFT 中。由于“占用空间”计算的是占用的簇的大小总和,这类文件的“占用空间”就是 0 了,自然比“大小”小。

启用压缩的文件

如果在属性中启用了“压缩”,文件的“占用空间”自然会比“大小”小。


OneDrive释放空间后的文件

如果在 OneDrive 中释放了空间,文件就只存储在云端了,“占用空间”自然会比“大小”小。

参考文章

  1. How do the sectors in a hard disk work?
  2. windows系统中文件大小和占用空间不同的原因解析
  3. 为什么windows“占用空间”比文件“大小”还小?
  4. “size on disk” is zero for non-zero file in windows 8?