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

Vor*_*Dev 0 filesystems fat32 fat16

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

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

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

plu*_*ash 6

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

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

在 FAT16 上,该字段仅限于有符号 32 位数字的范围。我预计其原因是在 2GB 被认为是疯狂的文件大小时写回的遗留代码。无论如何,超过 2GB 的 FAT16 文件系统都是一个奇怪的东西*。

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

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