JOBB DirectoryFullException:de.waldheinz.fs.fat.DirectoryFullException:目录已满

我正在尝试在包含192个jpg文件的目录上使用JOBB工具,总共大约70 MB。 当我以jobb -d C:/sdk/tools/dir/data -k 123456 -o com.nick.app.obb -pn com.nick.app -pv 1运行命令时,它会生成以下日志:

 Slop: 0 Directory Overhead: 0 Slop: 189853 Directory Overhead: 24704 Partial Sector [32] writing to sector: 277 Partial Sector [32] writing to sector: 277 Partial Sector [32] writing to sector: 277 Partial Sector [299] writing to sector: 897 Partial Sector [416] writing to sector: 1733 Partial Sector [148] writing to sector: 2385 Partial Sector [95] writing to sector: 3013 Partial Sector [498] writing to sector: 3573 Partial Sector [146] writing to sector: 4061 Partial Sector [427] writing to sector: 4581 Partial Sector [204] writing to sector: 5213 Partial Sector [115] writing to sector: 5769 Partial Sector [69] writing to sector: 6481 Partial Sector [79] writing to sector: 7077 Partial Sector [346] writing to sector: 7661 Partial Sector [93] writing to sector: 8213 Partial Sector [120] writing to sector: 8857 Partial Sector [423] writing to sector: 9461 Partial Sector [4] writing to sector: 10149 Partial Sector [184] writing to sector: 11065 Partial Sector [479] writing to sector: 11921 Partial Sector [83] writing to sector: 12569 Partial Sector [358] writing to sector: 13241 Partial Sector [378] writing to sector: 14009 Partial Sector [366] writing to sector: 14669 Partial Sector [393] writing to sector: 15677 Partial Sector [323] writing to sector: 16385 Partial Sector [236] writing to sector: 16989 Partial Sector [233] writing to sector: 17645 Partial Sector [503] writing to sector: 18345 Partial Sector [348] writing to sector: 19017 Partial Sector [473] writing to sector: 19721 Partial Sector [192] writing to sector: 20345 Partial Sector [398] writing to sector: 20805 Partial Sector [67] writing to sector: 21617 Partial Sector [3] writing to sector: 22437 Partial Sector [315] writing to sector: 23489 Partial Sector [161] writing to sector: 24045 Partial Sector [421] writing to sector: 24569 Partial Sector [465] writing to sector: 25557 Partial Sector [164] writing to sector: 26485 Partial Sector [458] writing to sector: 27177 Partial Sector [412] writing to sector: 28153 Partial Sector [1] writing to sector: 28633 Partial Sector [119] writing to sector: 29441 Partial Sector [367] writing to sector: 30413 Partial Sector [274] writing to sector: 31397 Partial Sector [325] writing to sector: 32369 Partial Sector [355] writing to sector: 33361 Partial Sector [187] writing to sector: 34025 Partial Sector [136] writing to sector: 34829 Partial Sector [157] writing to sector: 35873 Partial Sector [175] writing to sector: 36733 Partial Sector [106] writing to sector: 37673 Partial Sector [79] writing to sector: 38593 Partial Sector [379] writing to sector: 39545 Partial Sector [296] writing to sector: 40517 Partial Sector [440] writing to sector: 41205 Partial Sector [277] writing to sector: 41985 Partial Sector [153] writing to sector: 42609 Partial Sector [484] writing to sector: 43385 Partial Sector [363] writing to sector: 44329 Partial Sector [510] writing to sector: 45097 Partial Sector [296] writing to sector: 46101 Partial Sector [314] writing to sector: 47081 Partial Sector [244] writing to sector: 48073 Partial Sector [187] writing to sector: 48825 Partial Sector [253] writing to sector: 49825 Partial Sector [374] writing to sector: 50833 Partial Sector [508] writing to sector: 51777 Partial Sector [26] writing to sector: 52517 Partial Sector [192] writing to sector: 53385 Partial Sector [137] writing to sector: 54209 Partial Sector [312] writing to sector: 55029 Partial Sector [145] writing to sector: 55829 Partial Sector [394] writing to sector: 56517 Partial Sector [150] writing to sector: 57317 Partial Sector [81] writing to sector: 58197 Partial Sector [198] writing to sector: 59101 Partial Sector [358] writing to sector: 59929 Partial Sector [397] writing to sector: 60729 Partial Sector [142] writing to sector: 61209 Partial Sector [148] writing to sector: 62193 Partial Sector [365] writing to sector: 62833 Partial Sector [93] writing to sector: 63293 Partial Sector [450] writing to sector: 63701 Partial Sector [10] writing to sector: 64485 Partial Sector [354] writing to sector: 64969 Partial Sector [174] writing to sector: 65441 Partial Sector [435] writing to sector: 65961 Partial Sector [64] writing to sector: 66553 Partial Sector [41] writing to sector: 67053 Partial Sector [463] writing to sector: 67489 Partial Sector [177] writing to sector: 68041 Partial Sector [403] writing to sector: 68509 Partial Sector [479] writing to sector: 69305 Partial Sector [248] writing to sector: 69761 Partial Sector [331] writing to sector: 70245 Partial Sector [361] writing to sector: 70745 Partial Sector [56] writing to sector: 71281 Partial Sector [301] writing to sector: 71805 Partial Sector [253] writing to sector: 72629 Partial Sector [461] writing to sector: 73041 Partial Sector [304] writing to sector: 73561 Partial Sector [218] writing to sector: 74105 Partial Sector [147] writing to sector: 74765 Partial Sector [303] writing to sector: 75365 Partial Sector [410] writing to sector: 76321 Partial Sector [280] writing to sector: 77137 Partial Sector [484] writing to sector: 77697 Partial Sector [344] writing to sector: 78465 Partial Sector [189] writing to sector: 79001 Partial Sector [126] writing to sector: 79413 Partial Sector [262] writing to sector: 79929 Partial Sector [187] writing to sector: 80317 Partial Sector [465] writing to sector: 80869 Partial Sector [350] writing to sector: 81313 Partial Sector [236] writing to sector: 81793 Partial Sector [98] writing to sector: 82333 Partial Sector [223] writing to sector: 83209 Partial Sector [1] writing to sector: 83593 Partial Sector [51] writing to sector: 84577 Partial Sector [340] writing to sector: 84993 Partial Sector [377] writing to sector: 85961 Partial Sector [232] writing to sector: 86829 Partial Sector [229] writing to sector: 87253 Partial Sector [337] writing to sector: 88225 Partial Sector [205] writing to sector: 89285 Partial Sector [353] writing to sector: 90089 Partial Sector [289] writing to sector: 90921 Partial Sector [369] writing to sector: 91969 Partial Sector [283] writing to sector: 92741 Partial Sector [267] writing to sector: 93553 Partial Sector [313] writing to sector: 94049 Partial Sector [363] writing to sector: 94521 Partial Sector [415] writing to sector: 95245 Partial Sector [181] writing to sector: 96269 Partial Sector [420] writing to sector: 96733 Partial Sector [251] writing to sector: 97733 Partial Sector [244] writing to sector: 98221 Partial Sector [406] writing to sector: 98669 Partial Sector [226] writing to sector: 99069 Partial Sector [363] writing to sector: 100045 Partial Sector [133] writing to sector: 100769 Partial Sector [461] writing to sector: 101209 Partial Sector [329] writing to sector: 102337 Partial Sector [495] writing to sector: 103201 Partial Sector [452] writing to sector: 104045 Partial Sector [97] writing to sector: 105153 Partial Sector [236] writing to sector: 106177 Partial Sector [10] writing to sector: 106645 Partial Sector [292] writing to sector: 107725 Partial Sector [36] writing to sector: 108725 Partial Sector [500] writing to sector: 109793 Partial Sector [441] writing to sector: 110681 Partial Sector [128] writing to sector: 111329 Partial Sector [293] writing to sector: 112277 Partial Sector [382] writing to sector: 112737 Partial Sector [493] writing to sector: 113229 Partial Sector [256] writing to sector: 113653 Partial Sector [20] writing to sector: 114893 Partial Sector [351] writing to sector: 115905 Partial Sector [110] writing to sector: 116913 Partial Sector [322] writing to sector: 118041 Partial Sector [156] writing to sector: 118589 Partial Sector [232] writing to sector: 119013 Partial Sector [331] writing to sector: 119533 Partial Sector [297] writing to sector: 120509 Partial Sector [310] writing to sector: 121549 Partial Sector [392] writing to sector: 122545 Partial Sector [285] writing to sector: 123485 Partial Sector [108] writing to sector: 124065 de.waldheinz.fs.fat.DirectoryFullException: directory is full at de.waldheinz.fs.fat.Fat16RootDirectory.changeSize(Fat16RootDirectory.java:109) at de.waldheinz.fs.fat.AbstractDirectory.addEntries(AbstractDirectory.java:282) at de.waldheinz.fs.fat.FatLfnDirectory.addFile(FatLfnDirectory.java:139) at com.android.jobb.Main$1.processFile(Main.java:475) 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 adding file with name: img178.jpg at com.android.jobb.Main$1.processFile(Main.java:478) 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) 

有什么建议吗?

根本原因分析:

 de.waldheinz.fs.fat.DirectoryFullException: directory is full 

Fat16RootDirectory becomes fullClusterChainDirectory grows beyond it's ClusterChainDirectory's maximum size(512 MB)时发生此错误

从哪里发生例外? : DirectoryFullException.java

 DirectoryFullException(int currentCapacity, int requestedCapacity) { this("directory is full", currentCapacity, requestedCapacity); } 

对于这个问题,我想更喜欢解决方案和一些建议。 希望它可以帮到你。

方案1:

在Windows上:如果你有一个文件夹“数据”丢失图片,并复制到android sdk-tools目录

 data/1.jpg data/2.jpg data/3.jpg data/... data/5000.jpg 

你用

 console>>>jobb -d C:/sdk/tools/dir/data -k 123456 -o com.nick.app.obb -pn com.nick.app -pv 1 

你会得到上面提到的错误。 尝试添加一个目录层次结构,并将“数据”目录设置为子文件夹

 root/data/1.jpg root/data/2.jpg root/data/3.jpg root/data/... root/data/5000.jpg 

使用

 console>>>jobb -d C:/sdk/tools/dir/root/data -k 123456 -o com.nick.app.obb -pn com.nick.app -pv 1 

你必须要记住,如果你想稍后从obb中读取,那么这些图片现在都在子文件夹中。

资源链接:

  1. 在Android中使用jobb工具
  2. 是什么导致jobb工具抛出FAT Full IOException?

建议1:

要检查sector/cluster/FAT大小,请运行"jobb -v -dump [obb]" 。 这将打印出一堆信息,包括"Sectors per cluster""Sectors per FAT"

在我的旧.obb中,这些值分别为8和150。 8不是150的因素,所以我可能已经遇到了上面描述的内核bug。

您需要确保使用更新的jobb.jar fat32lib.jar来解决该问题。 使用Google Drive上的当前版本的库,我现在每个群集有8个扇区,每个FAT有184个扇区。

我还没有validation这是否修复了我之前看到的数据损坏问题。 我会做更多测试并在此报告。

建议2:

黑客攻击可以解决问题 。 但需要更多的记忆:

这个问题确实开始变得非常无聊。 今天我找到了一个解决方法,这很荒谬,但看起来像.obb添加额外的数据似乎解决了这个问题(至少对我而言)。 确切地说,我原来的.obb文件大小是110MB,现在是220MB,应用程序读取数据没有损坏。 到目前为止,这是我曾经对应用程序做过的最脏的黑客,我不为此感到骄傲,但是嘿,至少现在正在工作。 :p

建议-3:

2015年10月19日,他们发布了更新版本: android-sdk-fat32lib

此版本分叉解决了与Android SDK一起分发的JOBB工具(Android SDK 23)无法生成大于512M的OBB文件的问题。

更新:

您将在以下部分中获得原始版本和修改版本的源代码

  • 原始版本可在https://github.com/waldheinz/fat32-lib/获得
  • 修改版本可在https://android.googlesource.com/platform/external/fat32lib/获得

要从源代码制作jar文件 ,您可以按照教程:

  1. 如何在没有公开披露源代码的情况下使用gradle创建Android库Jar?
  2. Gradle – 创建具有依赖项的Jar文件