文章关键字 ‘Size on disk’

文件属性中“大小”和“占用空间”的区别

2010年11月29日,星期一

很多人一直在困惑,一个文件或文件夹属性中的“大小(Size)”和“占用空间(Size on disk)”通常不相互匹配。“大小”的值表示文件实际大小的字节数,而“占用空间”的值表文件占用硬盘空间大小的字节数。

这种差异来自文件系统在驱动器上存储的文件的方式。为了减少使用的地址数量,文件系统把一定数量的字节当成簇。根据不同的文件系统,常见的簇大小可以从2KB的到32KB。一个被写入到磁盘的文件需要占用若干个不相连的簇,而无论文件的实际大小。因此,一个1KB的文件,保存在一个簇大小为2KB的文件系统将占用2KB,但保存在一个簇大小为32KB的文件系统,它会占用32KB。也就是说,一个33KB的文件将占用17个2KB的簇(34KB)或2个32KB的簇(64KB)。

基于上述的讨论,你会期望占用空间的大小会比实际大小更大,但是多出的部分不会超过一个簇的大小。在查看一个有很多文件的文件夹时,这种差异可能会更大,因为每个单独文件浪费的空间加起来会体现在文件夹上。

简单地说,就是:

  1. “大小”是文件的实际字节数,而“占用空间”的是在磁盘上占用的字节数。
  2. “占用空间”通常比“大小”要大,但也可以和“大小”一样

公式(JavaScript描述):

//簇大小,一般为4KB
var cluster = 4096;
//文件大小,单位为字节
var size = 4282661;
//占用大小,单位为字节
var size_on_disk = 
Math.ceil(size / cluster) * cluster;
//回显
WScript.Echo(size_on_disk);

参考链接:Difference Between Size vs Size on Disk