FAT 的最大文件大小是多少?

FAT 的最大文件大小是多少?

据我所知,FAT32 使用 32 位数字来存储每个文件的文件大小(因此 FAT32 的文件大小限制为 ~4GiB)。在 FAT 中,每个文件都有一个根目录条目,这些条目用于存储文件大小的值。这一页显示 FAT32 的目录条目结构。此资源建议 FAT12 使用 25 位值来表示文件大小,而 FAT16 使用 31 位值。

第二个链接资源中的信息是否正确?如果不正确,FAT12 和 FAT16 的真正最大文件大小是多少?如果正确,那么为什么这些文件系统使用不规则的位数来存储文件大小?

编辑:为什么他们受体积大小限制而 FAT32 有固定大小?是因为它存储的文件大小大于任何支持的卷大小,还是 FAT12 和 FAT16 不使用文件大小作为目录条目中的字段?

答案1

FAT 上的文件大小存储在 32 位字段中。

在 FAT32 上,该字段被视为无符号,允许文件最大为 4294967294 字节(显然由于某种原因不允许 4294967295,可能在某处使用“-1”作为标志)。

在 FAT16 上,该字段的范围被限制为有符号的 32 位数。我猜想这是因为在 2GB 被认为是文件大小过大的时候编写的遗留代码。无论如何,超过 2GB 的 FAT16 文件系统都是一个奇怪的东西*。

AIUI 在 FAT12 上将文件大小限制为 32MB(不是 32KB!)不是因为文件大小有任何特定限制,而只是因为这是卷的最大大小,并且您不能拥有大于卷的文件。这同样适用于早期版本的 FAT16。

* DOS 4 到 Windows 95 使用的 FAT16 版本限制为每簇 64 个扇区,在典型的 512 字节扇区上,卷大小约为 2GiB。NT 将每簇的最大扇区数增加了一倍,允许 512 字节扇区卷大小约为 4GiB,并且 98 增加了对读取/写入的支持,但不支持创建或修复此类卷。如果底层设备有更大的扇区,理论上可以实现更大的卷,但我没有看到任何证据表明这在实践中确实发生了。

答案2

这部分取决于集群的大小。

虽然磁盘(对于大多数实现)有 512 字节扇区,但这些扇区被排列成簇,以允许更大的文件具有更大的存储容量。

为了FAT12最大容量和文件大小分别为 16 MB(4 KB 簇)和 32 MB(8 KB 簇)。

为了FAT16,初始版本没有改变容量,但随着它的发展,文件大小被允许扩展到 2Gb、4Gb,最后受到体积的限制,体积最大值从 2Gb 到 16Gb,具体取决于操作系统实现的 FAT16 版本

相关内容