标题: 文件属性中“大小”和“占用空间”的区别
作者: Demon
链接: https://demon.tw/operating-system/difference-between-size-vs-size-on-disk.html
版权: 本博客的所有文章,都遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议条款。
很多人一直在困惑,一个文件或文件夹属性中的“大小(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
赞赏微信赞赏支付宝赞赏
随机文章:
厉害!
//簇大小,一般为4KB
var cluster = 4096;
//文件大小,单位为字节
var size = 4097
//占用大小,单位为字节
var size_on_disk = Math.ceil(size / cluster) * cluster;
//回显
WScript.Echo(size_on_disk);
复杂又显得NB的实在想不出就这用算了。。。好不好。。。要不你来想吧
http://blog.linkanyway.com/post/2010/11/29/filesizeondisk.aspx
要不你写个正则!!再搞个string.split…分组判断。。。还是觉得不够牛。。要不用火星文吧。
这个是文件系统的知识啦
好强大的域名 – -b
这个size的问题在NTFS下会更加复杂……
因为有resident file和sparse file
也许还有the infamous ADS
专业。。。