什么导致jobb工具抛出FAT完全IOException?

我正在尝试使用Android jobb工具为我的应用程序创build一个大的OBB文件,但是我受到“FAT Full”IOException的困扰:

java.io.IOException: FAT Full (XXXX, YYYY) at de.waldheinz.fs.fat.Fat.allocNew(Fat.java:298) at de.waldheinz.fs.fat.Fat.allocAppend(Fat.java:376) at de.waldheinz.fs.fat.ClusterChain.setChainLength(ClusterChain.java:175) at de.waldheinz.fs.fat.ClusterChain.setSize(ClusterChain.java:132) at de.waldheinz.fs.fat.FatFile.setLength(FatFile.java:91) at de.waldheinz.fs.fat.FatFile.write(FatFile.java:154) at com.android.jobb.Main$1.processFile(Main.java:495) at com.android.jobb.Main.processAllFiles(Main.java:604) at com.android.jobb.Main.processAllFiles(Main.java:600) at com.android.jobb.Main.main(Main.java:417) Exception in thread "main" java.lang.RuntimeException: Error getting/writing file with name: LAST_PROCESSED_FILE at com.android.jobb.Main$1.processFile(Main.java:501) at com.android.jobb.Main.processAllFiles(Main.java:604) at com.android.jobb.Main.processAllFiles(Main.java:600) at com.android.jobb.Main.main(Main.java:417) 

在上面的错误信息中, XXXX总是打印为低于YYYY的一个整数值,并表示可用“簇”的数量(我对存储术语不够精确,无法确切知道这意味着什么)。 YYYY表示最后成功分配的簇索引,根据我的经验,它总是与最后一个可用簇索引相同(数组大小为XXXX + 2,因此与YYYY相同的XXXX + 1是最后一个可用索引)。

崩溃似乎出现在总文件大小超过511 MB的地方( 实际的限制是536,193,820字节 ,单个字节更多导致溢出!),所以LAST_PROCESSED_FILE是相当随意的,但它列出了正在处理的文件发生了事故。 鉴于存储格式是FAT16(据我所知),最大文件大小不应该是2 GB?

我已经通过各种来源阅读空白或小目录或文件,小文件总大小,或目录超过500 MB的单个文件可能会导致此崩溃(虽然我还没有能够确定为什么)。 这些原因都不适用于我的情况(这又是基于总文件大小)。

我自己对jobb工具源的回顾并没有提供任何见解。 任何人都可以摆脱这个问题的任何亮光?

Solutions Collecting From Web of "什么导致jobb工具抛出FAT完全IOException?"

事实certificate,jobb工具的许多问题都与它所使用的FAT文件系统库有关,这是错误地将FAT16存储单元的最大大小确定为<512 MB(实际上它应该是2 GB) 。

通过修改FAT库,我可以使用jobb工具成功build立超过512 MB的OBB文件。 这也与4 MB以下的OBB文件无效的原因有关。 jobb工具源也应该更新,因为预期的文件系统应该始终是FAT16。 小单位应该没问题,如果数据超过2 GB,应该只给出问题。

我将在FAT库中报告这个错误,并在jobb工具中提出一个问题。

编辑:修改过的源文件和一个GUI工具可以在我的GitHub (尽pipe,遗憾的是,我没有保留一个正确的版本历史的变化)。