前言:

今天再拷贝文件的时查看文件属性,发现有“文件大小”和“占用空间”两个内容,而且两者之间的差距很大,见下图:

上图可知文件大小是2.54GB,而占用空间是18.2GB,差了不到16个G。

Windows会使用NTFS和FAT的文件系统管理磁盘文件,这个大家都知道,而所有文件系统都是基于"簇"的大小,也就是分配单元的大小,说白了,就是分配用来保存文件的最小磁盘空间量。而常用的Windows XP NTFS下最大的默认簇大小为 4 千字节 (KB)。也就是说,每个文件都是按4K的空间划分保存的,即使这个文件只有100字节。举个生活中的例子吧,很多人一起吃饭,这个分配单元就相当于碗的大小,这个文件就好比碗里的饭,每个人的饭量不一样,有人吃的多,就需要两个碗来盛饭,但是有的人吃的少,但也是要占一个碗。了解这个概念以后,理解起来文件大小和占用空间的关系就简单多了。

 

1.什么是簇?  

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

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

 2.分区格式与簇大小

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

  簇数=取整(文件大小/簇大小)+1     所占空间=簇数×磁盘簇大小

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

3.轻松查看簇大小

①   在WINDOWS的操作系统中,我们可以用Chkdsk命令来进行查看,打个比方,我们要查看C盘的簇大小,操作如下,首先点击【开始菜单】,选择【运行...】,在运行输入框键入“CMD”后回车,然后在黑色DOS下键入“C:”后点回车键确认,再输入“Chkdsk”后点击回车键确认,就可以从它的分析结果中,得到C盘簇的大小。不过在结果中会把簇称之为“分配单元”或者“Allocation unit”。
         

② 还可以借助PQ Magic等磁盘工具来检测。目前很多磁盘工具都可以显示磁盘信息的详情。例如在PQ Magic中,选择要查看的磁盘分区,然后单击右键选择【高级】,然后选择【调整簇的大小】,就可以从对话框中看到或者更改当前磁盘设置的簇大小。

③ 也可以自己手动创建一个100字节以下的文档,然后把文件复制到想要查看簇大小的磁盘分区中,打开文件属性,在所占空间一栏中显示的数值就是簇的大小。

总结:

简单的介绍了一下“文件大小”和“占用空间”的差别,所以当我们存储非常多的小文件的时候,其所占用的空间就越大,但很可能其实际的文件大小却很小,也就是这个道理。同理,一个文件越大,其占用的空间也就越小。

说简单一点,拿仓库做比方,我们有100个仓库,为了好管理和查找,我们可能会把各种不同的物品分别放入不同的仓库,但是这个物品很可能不能填满仓库,那么它仍然也是占用了仓库的所有空间的。那么可能有人问了,为什么不把这个仓库多放东西,好节约空间,但是这样的话很可能你找很久久没有办法找到你所要的东西,其性能就非常低了。同理。

“文件大小”和“占用空间”的区别相关推荐

  1. windows “文件大小”与“占用空间”、文件系统与文件拷贝

    0. 文件大小与占用空间 "文件大小"和"占用空间"的差别 首先需要明确的是,"文件大小"代表着文件的真实大小(文件内容实际包含的全部字节数 ...

  2. 文件大小与占用空间大小不同的原因

    1."文件大小"与"所占空间"的差别 为了便于大家理解,我们先来看两个例子: 例1:找到D盘上的Ersave2.dat文件,用鼠标右键单击该文件,选择" ...

  3. 图像分辨率、像素总数、文件大小之间的详细区别

    一张3456*2048的图像指的是其总像素数为(3456*2048),其中长边有3456个像素,宽边有2048个像素.我们所说的手机1500万像素等概念就是源于这个乘积得出来的数值. 分辨率指的是每英 ...

  4. C#获取文件夹及文件的大小与占用空间的方法

    本文详细介绍了利用C#实现根据路径,计算这个路径所占用的磁盘空间的方法 . 网上有很多资料都是获取文件夹/文件的大小的.对于占用空间的很少有完整的代码.这里介绍实现这一功能的完整代码,供大家参考一下. ...

  5. C#获取文件夹/文件的大小以及占用空间 转摘自:http://www.cnblogs.com/chenpeng-dota/articles/2176470.html...

    C#获取文件夹/文件的大小以及占用空间 今天,头给了个任务:写个方法,我会给你个路径,计算这个路径所占用的磁盘空间 . 然后,找了很多资料.但大部分都是获取文件夹/文件的大小的.对于占用空间的没有成品 ...

  6. 文件大小 和 文件占用空间

    创建一个文件 b.txt $ echo -n "b" > b.txt 查看文件大小 $ ls -lh b.txt -rw-rw-r-- 1 liyongjun liyongj ...

  7. 32位程序和64位程序这些区别你知道吗?

    我们在编写C/C++程序时,32位程序和64位程序的代码有何区别?如何编写既可以编译成32位程序又可以编译成64位程序的代码? 代码上的区别 实际上,对于32位程序和64位程序来说,代码上的区别不大, ...

  8. 专升本第四讲(计算机的“灵魂”)

    操作系统基本概念    1.概念 操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在"裸机"上的最基本的系统软件,任何 ...

  9. Win10 中的文件链接

    在 linux 系统里,通常可以用 ln 指令创建文件链接.而在windows中,其实也是有类似的指令,可以实现文件链接. 说明一下,我自己的电脑操作系统是win10,虽然理论上mklink能够在wi ...

  10. FPGA之道(12)FPGA芯片的配置方式

    文章目录 前言 FPGA芯片的配置方法 主动配置模式 被动配置模式 JTAG配置模式 前言 Xilinx公司FPGA芯片的配置方法在调试阶段可以通过JTAG的方式将bit流文件烧写(编程)进FPGA芯 ...

最新文章

  1. 公司--》字符串截取
  2. Vista下的五笔输入法
  3. SpringCloud系列二:Restful 基础架构(搭建项目环境、创建 Dept 微服务、客户端调用微服务)...
  4. python测量不确定度_chaospy-不确定度量化的数值工具-Jonathan Feinberg Installation Example Usage...
  5. JSTL 与 JSP 代码段 相互调用变量
  6. 迁移.net framework 工程到.net core
  7. 嵌入式基础认识1:存储器(如RAM、ROM和FLASH)
  8. cortex m4 中文手册_江淮瑞风M4柴油版上市 售13.88-15.48万
  9. 黑马博客——详细步骤(八)项目功能的实现之另一种分页方式【mongoose-sex-page】
  10. Wannafly挑战赛27: E. 黄魔法师(构造)
  11. 第五十五节,IO多路复用select模块加socket模块,伪多线并发
  12. iOS 创建 pch 文件
  13. matlab中ode指令,在Matlab中使用ODE选择步长
  14. 计算机打印机共享服务怎么开,windows7系统打印机共享怎么设置?windows7系统打印机共享设置步骤...
  15. android代码控制组件的移动,Android自定义控件实现随手指移动的小球
  16. 即使Windows DVD Maker不存在,如何在Windows 8上创建DVD-DVDStyler
  17. Java怎么屏蔽骂人的词_表示嫌弃一个人的词语-高级的含蓄的骂人的话-形容很反感一个人成语...
  18. 表白代码c语言,C语言告白代码,一闪一闪亮晶晶~
  19. Java企业应用系统——MES工厂智造系统 包含ERP WMS
  20. 常见条码碳带质量问题有哪些影响?

热门文章

  1. cpufreq 频率设置verify
  2. python编程自然数表达式_实现四则运算 (python实现)by 周乃君 张宏根
  3. python实现企业微信定时发送文本消息
  4. 华为智慧屏鸿蒙应用,华为智慧屏S Pro体验:告诉你鸿蒙OS有多优秀
  5. 随机游走模型 matlab,随机游走的matlab实现
  6. 图机器学习——2.1 节点嵌入:基于随机游走
  7. 三阶魔方层先还原方法图解
  8. mysql mtq_GoLang 连接 Mysql 数据库
  9. Spring In Action 4 学习笔记(一)Spring概览
  10. ios中Date.prase()兼容问题