我试图在一个包含192个jpg文件的目录上使用jobb工具,总计约70mb。当我运行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上:如果你有一个“data”文件夹,其中丢失了图片,并将其复制到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中阅读,图片现在在一个子文件夹中。
资源链接:
Using jobb tool in Android
What causes jobb tool to throw FAT Full IOException?
Suggestion-1:
要检查sector/cluster/FAT大小,请运行"jobb -v -dump [obb]"。它将打印一堆信息,包括"Sectors per cluster""Sectors per FAT"
在我以前的obb中,这些值分别是8和150。8不是150的因子,所以我可能碰到了上面描述的内核错误。
您需要确保使用更新的jobb.jarfat32lib.jar来解决该问题。根据google驱动器上当前版本的库,我现在得到每个集群8个扇区,每个fat 184个扇区。
我还没有证实这是否修复了我之前看到的数据损坏问题。我会做更多的测试和报告回来。
建议2:
Hacking can solve the issue。但却带走了更多的记忆:
这个问题确实开始变得非常无聊。今天我想出了一个解决办法,这很荒谬,但看起来在.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文件,可以按照教程进行操作:
How to create an Android Library Jar with gradle without publicly revealing source code?
Gradle – Create a Jar file with dependencies

关于java - JOBB DirectoryFullException:de.waldheinz.fs.fat.DirectoryFullException:目录已满,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37861753/

10-11 04:03