很多人一直在困惑,一个文件或文件夹属性中的“大小(Size)”和“占用空间(Size on disk)”通常不相互匹配。“大小”的值表示文件实际大小的字节数,而“占用空间”的值表文件占用硬盘空间大小的字节数。
这种差异来自文件系统在驱动器上存储的文件的方式。为了减少使用的地址数量,文件系统把一定数量的字节当成簇。根据不同的文件系统,常见的簇大小可以从2KB的到32KB。一个被写入到磁盘的文件需要占用若干个不相连的簇,而无论文件的实际大小。因此,一个1KB的文件,保存在一个簇大小为2KB的文件系统将占用2KB,但保存在一个簇大小为32KB的文件系统,它会占用32KB。也就是说,一个33KB的文件将占用17个2KB的簇(34KB)或2个32KB的簇(64KB)。
基于上述的讨论,你会期望占用空间的大小会比实际大小更大,但是多出的部分不会超过一个簇的大小。在查看一个有很多文件的文件夹时,这种差异可能会更大,因为每个单独文件浪费的空间加起来会体现在文件夹上。
简单地说,就是:
- “大小”是文件的实际字节数,而“占用空间”的是在磁盘上占用的字节数。
- “占用空间”通常比“大小”要大,但也可以和“大小”一样
公式(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