我正在尝试使用 Android jobb 工具为我的应用程序创建一个大型 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 工具源的评论并没有提供任何见解。任何人都可以阐明这个问题吗?