Вот мой код, хотя и очень грубое кодирование:
public void loadStack(AssetManager manager, String path) {
String[] list;
String thePath;
try {
list = manager.list(path);
if (list != null) {
for (int i = 0; i < list.length; i++) {
try {
if (list.length != 0) {
if (path.toString() == "") loadStack(manager, list[i]);
else {
thePath = path + "/" + list[i];
loadStack(manager, thePath);
}
}
String[] test = manager.list(list[i]);
if (test.length != 0) {
for (int j = 0; j < test.length; j++) {
byte[] assetBytes = readFromStream(list[i] + "/" + test[j]);
assetStack.push(assetBytes);
totalByteSize += assetBytes.length;
Log.d("Loading", "Stack loads assetBytes of length: " + Integer.toString(assetBytes.length));
// totalStackElementSize = assetStack.size();
}
}
// loadStack(manager, path + "/" + list[i]);
}
catch (IOException e) {
continue;
}
}
}
}
catch (IOException e1) {
return;
}
}
Я все еще пытаюсь улучшить код, и все, чего мне не хватает, это рассказать отдельно, какие относительные пути являются подкаталогами, и какие относительные путиявляются реальными путями к файлам, необходимым для загрузки.
Таким образом, я могу положиться на использование рекурсивного метода для обхода всех подкаталогов в папке ресурсов и загрузки только тех, которые мне нужны.
Кто-нибудь может указать мне правильное направление?Или я что-то упускаю из документации AssetManager?Заранее спасибо.Я стараюсь изо всех сил.
ОБНОВЛЕНИЕ:
Улучшен мой код до этого:
public void loadStack(AssetManager manager, String path, int level) {
try {
String[] list = manager.list(path);
if (list != null) {
for (int i = 0; i < list.length; i++) {
if (level >= 1) loadStack(manager, path + "/" + list[i], level + 1);
else if (level == 0) loadStack(manager, list[i], level + 1);
else {
byte[] byteBuffer = readFromStream(path);
assetStack.push(byteBuffer);
totalByteSize += byteBuffer.length;
}
}
}
}
catch (IOException e) {
Log.e("Loading", "Occurs in AssetLoad.loadStack(AssetManager, String, int), file can't be loaded: " + path);
throw new RuntimeException("Couldn't load the files correctly.");
}
}
Я все еще пытаюсь улучшить свой код.Единственная проблема состоит в том, что он имеет тенденцию читать папки, которые я не добавил в папку ресурсов, или папки, которые я никогда не создавал ранее.Это вызывает логические ошибки, которых я стараюсь избегать.