使用FAT32格式U盘、移动硬盘或这闪存卡的用户,都有这样的经历,如果一个文件的大小超过4GB,拷贝时系统会出现上图的提示,禁止将数据拷贝进FAT32分区。为什么FAT32会有这种限制?
这是FAT32的先天弊端造成的,并且无法通过任何第三方程序来加以纠正。FAT32是一个相对古老的文件系统,其诞生和广泛应用的年代中,硬盘容量很小,系统和程序都不可能生成超过4GB大小的文件,因此,在FAT32的目录区中对于文件大小的定义是这样的:
上图是一个FAT32分区的目录区结构,其中紫色选中的区域是某一个数据的目录区,在这里记录着文件的名称、创建修改访问时间、起始位置以及大小信息。其中红框标注的4个字节用来记录文件的大小,其单位为字节数,这四个字节所能标示的最大十六进制为FF FF FF FF,换算为10进制为4294967295,由于这个数的单位为字节,我们需要将其转换为GB,那么4294967295÷1024÷1024÷1024=3.99GB。因此,对于超过4GB的文件来说,目录区中没有足够的字节来记录它的大小,它也就理所当然的被FAT32拒之门外了。
FAT32是一种跨平台的非日志型文件系统,自我修复能力很差,但对于闪存介质来说,非日志型恰恰是它的优点,因为数据在写入时,系统不需要记录日志,减小了闪存的写入次数从而延长了它的使用寿命。所以虽然FAT32已经年迈,在大数据时代有着各种不适,但它还依然能活跃在小容量的闪存世界中。在大容量闪存中,其使用空间已逐渐被exFAT取代。