• 文件大小和占用空间为何不一样


      心细的朋友也许都注意过,一个文件,无论存储在硬盘空间还是其它移动存储空间,文件本身的大小,要比所占用的空间要小;

      比如说,一个12K的Txt文件,所占用的空间大于12K,这是为什么呢?

      此外,还存在这样的情况,同一个文件,存放在不同的磁盘分区、不同的操作系统环境,所占用的空间也不一样!这又是为什么呢?

      ①文件大小与所占空间的差别

      文件的大小其实就是文件内容实际具有的字节数,它以Byte为衡量单位,只要文件内容和格式不发生变化,文件大小就不会发生变化。但文件在磁盘上的所占空间却不是以Byte为衡量单位的,它最小的计量单位是“簇(Cluster)”。

      什么是簇?

      文件系统是操作系统与驱动器之间的接口,当操作系统请求从硬盘里读取一个文件时,会请求相应的文件系统(FAT 16/32/NTFS)打开文件。扇区是磁盘最小的物理存储单元,但由于操作系统无法对数目众多的扇区进行寻址,所以操作系统就将相邻的扇区组合在一起,形成一个簇,然后再对簇进行管理。每个簇可以包括2、4、8、16、32或64个扇区。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。

      为了更好地管理磁盘空间和更高效地从硬盘读取数据,操作系统规定一个簇中只能放置一个文件的内容,因此文件所占用的空间,只能是簇的整数倍;而如果文件实际大小小于一簇,它也要占一簇的空间。所以,一般情况下文件所占空间要略大于文件的实际大小,只有在少数情况下,即文件的实际大小恰好是簇的整数倍时,文件的实际大小才会与所占空间完全一致。

      ②分区格式与簇大小

      计算文件所占空间时,可以用如下公式:

      簇数=取整(文件大小/簇大小)+1

      所占空间=簇数×磁盘簇大小

      公式中文件大小和簇大小应以Byte为单位,否则可能会产生误差。如果要以KB为单位,将字节数除以1024即可。利用上述的计算公式,可以计算ersave2.dat文件的实际占用空间。

      ③轻松查看簇大小

      1、用Chkdsk查看簇大小

      在Windows操作系统中,我们可以使用Chkdsk命令查看硬盘分区的簇大小。例如我们要在Windows XP下查看C盘的簇大小,可以单击“开始→运行”,键入“CMD”后回车,再键入“C:”后回车,然后输入“Chkdsk”后回车,稍候片刻从它的分析结果中,我们就可以得到C盘的簇大小,不过它把簇称之为“分配单元”或者“Allocation unit”。

      2、用PQ Magic等磁盘工具来检测

      很多磁盘工具都具备磁盘信息显示等功能。例如在PQ Magic中,选择要查看的磁盘分区,然后单击右键选择“高级→调整簇大小”功能,即可从显示的对话框中可以看到该磁盘当前设置的簇大小。

      3、手工查看

      手动创建一个100字节以下的文本文档。然后将该文件复制到欲查看簇大小的磁盘分区中,在Windows下显示该文件的属性,其中“所占空间”处显示的数值就是簇大小。

  • 相关阅读:
    NYOJ 158 省赛来了(变相组合数)
    NYOJ 111 分数加减法
    NYOJ 14 会场安排问题 (贪心)
    POJ 3903 Stock Exchange(LIS)
    NYOJ 456 邮票分你一半(01背包)
    HDU 4521 小明系列问题——小明序列 (LIS加强版)
    CSU 1120 病毒(经典模板例题:最长公共递增子序列)
    挑战程序设计竞赛里面的几道深度优先搜索
    2009 Multi-University Training Contest 4
    USACO sec1.1
  • 原文地址:https://www.cnblogs.com/crazycxy/p/2104013.html
Copyright © 2020-2023  润新知