![为什么在 Windows 操作系统中 FAT32 格式卷的最大文件大小为 4GB?](https://linux22.com/image/1572287/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%9C%A8%20Windows%20%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E4%B8%AD%20FAT32%20%E6%A0%BC%E5%BC%8F%E5%8D%B7%E7%9A%84%E6%9C%80%E5%A4%A7%E6%96%87%E4%BB%B6%E5%A4%A7%E5%B0%8F%E4%B8%BA%204GB%EF%BC%9F.png)
文件分配表 (FAT) 的大小取决于簇数、使用的版本、使用的卷大小。例如,大小为 8GB 且格式化为 FAT32 的卷,簇大小为 4096 字节,则有 2^21 个簇。现在 FAT 的大小为number of clusters * address size of a cluster
。每个簇的地址大小是存储地址所需的位数。现在,由于它是 FAT32,因此它将是32位。因此 FAT 的大小为2^21 * 4(in bytes)= 2^23 bytes
。FAT 中的最大簇地址数为 2^28,因为其中 4 位用于特殊用途。
4GB 的文件将跨越 2^20 个簇。可用的簇总数为 2^21 现在,如果我们看到任何文件(大小为 4GB),则文件数据开始的第一个簇号将在根目录中可用(如果该文件位于根目录中)。并且可以从文件分配表 (FAT) 获得链接到第一个簇(文件所在的位置)的其他簇。那么问题是什么,我们有 2^21 个簇,而 4GB 大小的文件需要 2^20 个簇。它应该能够存储它。为什么不呢?
以上信息是根据我所知道的信息得出的。
答案1
最有可能的原因是每个文件都由其目录条目定义,该目录条目具有 32 位值“文件大小(以字节为单位)”,请参阅: https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system#Directory_entry
我想您可以从技术上创建一个包含更多数据的文件,但您的文件系统将格式错误,并且其行为未定义。