电脑:某文件属性里显示“大小”和“占用空间”不一样,为啥呀

2024-11-07 21:00:35
有2个网友回答
网友(1):

摘抄的: 在Windows系统中,一个文件的大小(字节数)和它在硬盘上(或其他存储介质上)所占的空间是两个既相互联系又有区别的概念。在不同的情况下,同一个文件的“所占空间”会发生变化。 文件的大小其实就是文件内容实际具有的字节数,它以Byte为衡量单位,只要文件内容和格式不发生变化,文件大小就不会发生变化。但文件在磁盘上的所占空间却不是以Byte为衡量单位的,它最小的计量单位是“簇(Cluster)”。 文件系统是操作系统与驱动器之间的接口,当操作系统请求从硬盘里读取一个文件时,会请求相应的文件系统(FAT 16/32/NTFS)打开文件。扇区是磁盘最小的物理存储单元,但由于操作系统无法对数目众多的扇区进行寻址,所以操作系统就将相邻的扇区组合在一起,形成一个簇,然后再对簇进行管理。每个簇可以包括2、4、8、16、32或64个扇区。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。 为了更好地管理磁盘空间和更高效地从硬盘读取数据,操作系统规定一个簇中只能放置一个文件的内容,因此文件所占用的空间,只能是簇的整数倍;而如果文件实际大小小于一簇,它也要占一簇的空间。所以,一般情况下文件所占空间要略大于文件的实际大小,只有在少数情况下,即文件的实际大小恰好是簇的整数倍时,文件的实际大小才会与所占空间完全一致。 实际上字节并不是保存文件的最小单元。操作系统将硬盘划分为若干个簇,然后以簇作为最小单位保存文件。每个簇的大小因为操作系统和分区大小而不同。例如Win9x/FAT16分区,如果分区小于512M,每个簇为8K;大于512M,每个簇为16K。如果一个文件为1K,那么在小于512M的分区,它占用8K;在大于512M的分区,它占用16K。大于一个文件,文件大小和占用空间之间的差距很小。但对于一个目录中的多个文件,这种差别可能非常大。所以你要是计算占用空间,先调GetDiskFreeSpace获得磁盘的簇的大小。 然后利用文件大小除以簇的大小并将小数进位得到占用的簇数,然后再乘以簇的大小就可以获得获得文件占用的空间. 大小和占用空间不一样是很正常的,硬盘分区的最小是以4k为计算单位的。就是说好像一个一个格子一样,这些格子比较大。即使是一个文件写了一个字,它的大小不足1k,但是显示占用空间为4k。所以特别是一些小文件很多的东西。大小加起来不大,可是占用空间往往比较悬殊。

网友(2):

这个是硬盘分区的一种簇的关系,还有一种是启动了文件系统的压缩文件模式。 =========================================== 这个簇在这边我也不知道要怎么用文字给你阐明,简单的说一下,物理你有学过连通器吧。如果不记得,那么更简单的说,两个瓶子用一个管对连起来。当在一个瓶子里面装满水以后,如果你继续装水,那么水就会通过那个连通管流到另一个瓶子里面。 ============================================ 硬盘在分区的时候,如果你用过PQ分区的时候,你会发现,有一向是可以选择簇的大小的,有32K 64K 128K等等,通常我们都没有选择,都是默认状态的,所以也许你没注意到。 不管你的硬盘是20G,或者是1TB都是一样的,你分区的时候,这个簇就存在了,都是无数个簇形成起来了。 ============================================ 一般上M以上的文件不容易看出占用多大空间,文件多大。 但是在KB的文件下,你经常就会发现文件多大,占用空间多大。 正如那连通器一样,你的簇如果是32KB,那你存放一个50KB左右的文件,那一个簇装不下,两个还剩下,因此产生了文件大小50KB,占用空间60KB或者55KB或者是64KB等等的数字出来。这样你明白了不。 ======================================== 如果是启用了文件系统的压缩功能,那么文件的名称都会变成蓝色的。压缩正如我们用压缩工具给文件打包一样,缩小一点,把多余的簇空间给挤兑出来。不多解释了,相信你应该明白得差不多了