Windows 文件大小

Sac*_*nth 2 windows

我不确定这是否适用于 Unix 或除 Windows 之外的任何其他操作系统,因此标题。当您在 Windows 中查看文件的属性时,您会看到大小和磁盘上的大小。有人可以解释两者之间的区别吗?

Eva*_*son 9

“磁盘大小”考虑了可能已应用于文件的任何压缩以及文件写入的最后一个分配单元末尾的“空闲”空间。

NTFS 允许对文件进行透明压缩/解压缩。压缩文件时,其大小保持不变(即文件中数据的大小),但文件的磁盘占用空间可能会更小,因为 NTFS 驱动程序将在文件数据写入磁盘时透明地压缩文件数据.

文件系统将文件存储在原子分配单元中——在 NTFS 和(ex)FAT 的情况下是一个“集群”。给定卷的簇大小可能会有所不同(NTFS 为 4K 到 64K,其他文件系统为其他)。小于单个簇的文件将存储在单个簇中,因此,至少占用一个簇的磁盘空间。您的文件的大小不太可能是簇大小的精确倍数,因此为该文件分配的最后一个簇将包含文件数据和占用最后一个簇中剩余未使用部分的“松弛”数据的组合。“磁盘大小”也计算这个“松弛”空间。

值得注意的是,对于 NTFS,非常小的文件可以存储在该文件的主文件表 (MFT) 条目中(文件名、文件数据和文件属性组合为 1024 字节或更少的文件)。该文件仍将显示 NTFS 卷簇大小的磁盘大小。

稀疏文件是一种机制,通过这种机制,文件看起来非常大,但包含大面积零和稀疏数据。NTFS 支持稀疏文件,并将报告磁盘上的大小作为数据运行使用的实际区域,不包括零。

编辑:

正如 syneticon-dj 指出的那样,这个问题当然也适用于其他操作系统。该du命令的 GNU 版本有一个--apparent-size参数,它将显示文件的数据大小,而不是磁盘大小(这是 的默认值du)。有时,每个尺寸都是相关的,了解差异是一个好主意。