大家传统的理解中,一直以为文件大小就是占用空间的大小,其实文件大小和占用空间的区别还是很大的,下面武林网来看看文件大小和占用空间两者之间有什么差别?
Windows会使用用NTFS和FAT的文件系统管理磁盘文件,这个大家都知道,而所有文件系统都是基于簇的大小,也就是分配单元的大小,说白了,就是分配用来保存文件的最小磁盘空间量。而常用的Windows XP NTFS下最大的默认簇大小为 4 千字节 (KB)。也就是说,每个文件都是按4K的空间划分保存的,即使这个文件只有100字节。举个生活中的例子吧,很多人一起吃饭,这个分配单元就相当于碗的大小,这个文件就好比碗里的饭,每个人的饭量不一样,有人吃的多,就需要两个碗来盛饭,但是有的人吃的少,但也是要占一个碗。了解这个概念以后,理解起来文件大小和占用空间的关系就简单多了。我们通过两个例子来进行分析。
1、“文件大小”与“所占空间”的差别
例1:找到D盘上的Ersave2.dat文件,用鼠标右键单击该文件,选择“属性”,即可打开对话框,我们可以看到,Ersave2.dat的实际大小为655,628 Byte(字节),但它所占用的空间却为688,128 Byte,两者整整相差了32KB。
例2:同样选择该文件,将它复制到A盘,你会发现该文件实际大小和所占空间基本一致,同为640KB,但字节数稍有差别。再将该文件复制到C盘,再查看属性的时候,它所占用的空间跟之间的两次又有差距了。
从这三次的复制情况,我们不难看出,文件的大小没有变化,而所占空间发生变化。说明占用空间的大小不是取决于文件的大小,而是磁盘的分配单元不同导致的。就像我们刚才讲过的文件磁盘上的储存机制,文件的大小就是文件内容实际有的字节数,所以会以Byte也就是字节,来作为衡量单位。只要文件的内容不变化,大小就不会变化。而在磁盘中的占用空间却不是,它是以Cluster,也就是簇来作为衡量单位。
2、分区格式与簇大小
在例2中,同一个文件在不同磁盘分区上所占的空间不一样大小,这是由于不同磁盘簇的大小不一样导致的。簇的大小主要由磁盘的分区格式和容量大小来决定,其对应关系如表1所示。
小编的软盘采用FAT分区,容量1.44MB,簇大小为512 Byte(一个扇区);C盘采用FAT 32分区,容量为4.87GB,簇大小为8KB;D盘采用FAT 32分区,容量为32.3GB,簇大小为32KB。计算文件所占空间时,可以用如下公式:
簇数=取整(文件大小/簇大小)+1 所占空间=簇数×磁盘簇大小
通过这个计算公式,就可以很轻易算出Ersave2.dat文件实际占用的空间。需要注意的是,在这个公式中,文件大小和簇大小应以Byte为单位,否则可能会产生误差。如果需要以KB为单位来进行计算的话,将字节数除以1024就可以了。
公式中文件大小和簇大小应以Byte为单位,否则可能会产生误差。如果要以KB为单位,将字节数除以1024即可。利用上述的计算公式,可以计算Ersave2.dat文件的实际占用空间。
可能有朋友要问了,怎么才能知道磁盘中簇的大小呢,下面给朋友们说三个方法:
一、在WINDOWS的操作系统中,我们可以用Chkdsk命令来进行查看,打个比方,我们要查看C盘的簇大小,操作如下,首先点击【开始菜单】,选择【运行...】,在运行输入框键入“CMD”后回车,然后在黑色DOS下键入“C:”后点回车键确认,再输入“Chkdsk”后点击回车键确认,就可以从它的分析结果中,得到C盘簇的大小。不过在结果中会把簇称之为“分配单元”或者“Allocation unit”。
二、还可以借助PQ Magic等磁盘工具来检测。目前很多磁盘工具都可以显示磁盘信息的详情。例如在PQ Magic中,选择要查看的磁盘分区,然后单击右键选择【高级】,然后选择【调整簇的大小】,就可以从对话框中看到或者更改当前磁盘设置的簇大小。
三、也可以自己手动创建一个100字节以下的文档,然后把文件复制到想要查看簇大小的磁盘分区中,打开文件属性,在所占空间一栏中显示的数值就是簇的大小。