gpt4 book ai didi

java - SuperFloppyFormatter 对于超过 512 MB 的任何内容都会返回 FAT32?

转载 作者:行者123 更新时间:2023-12-02 06:43:03 24 4
gpt4 key购买 nike

我正在使用de.waldheinz.fsAndroid jobb tool 相关的库,我发现了一些看起来很奇怪的事情。在文件 de.waldheinz.fs.fat.SuperFloppyFormatter.java:304 中我找到了这个:

public static FatType fatTypeFromSize(long sizeInBytes) {
final long sizeInMb = sizeInBytes / (1024 * 1024);
if (sizeInMb < 4) return FatType.FAT12;
else if (sizeInMb < 512) return FatType.FAT16;
else return FatType.FAT32;
}

FatType这是枚举 de.waldheinz.fs.fat.FatType ,但这里的实现非常简单。我的问题确实与 else if (sizeInMB < 512) return FatType.FAT16; 行有关,但是FAT12的检查同样麻烦。

FAT12 驱动器支持的最大大小为 32 MB,FAT16 驱动器支持的最大大小为 2 GB。为什么这个库对 4 MB 和 512 MB 施加这些限制?看来作者的这一说法可能是基于对 FAT12 和 FAT16 工作原理的相当幼稚的理解。 < 4MB 当然是 <= 4095 KB。 4095 是十六进制的 0xFFF,或者是二进制的 1111 1111 1111...这实际上代表 12 位...

我承认我自己对 FAT 知之甚少(我仍然没有完全理解扇区与簇、如何计算总可用大小等)。也许更好地理解这些事情的人可以确认是否有技术原因说明这种实现应该被认为是“正确的”?因为它看起来像是我的问题的确切原因。

谢谢!

最佳答案

FAT12 只有 16MB,而不是 32MB。

作者可能正在检查以下簇的数量:

对于 FAT12:4086(簇大小 0.5 - 4 KB)

对于 FAT16:65526(簇大小 2 - 32 KB)(不清楚为什么他要检查 512)。

对于 FAT32:~268,435,456(簇大小 4 - 32 KB)

详细信息请参见:http://www.pcguide.com/ref/hdd/file/partSizes-c.html

报告该库中的问题;)

关于java - SuperFloppyFormatter 对于超过 512 MB 的任何内容都会返回 FAT32?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18924872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com