Я боролся с простым списком каталогов активов. У меня есть следующая структура (грубо говоря):
-dirA
--data.xml
--AudioSUBdir
---some files here
--VideoSUBdir
---some files here
-dirB
--data.xml
--AudioSUBdir
---some files here
-test
--SUBtestDir
Все, что мне нужно, — это список родительского каталога ресурсов (то есть dirA, dirB и test; затем я прочитаю файлы data.xml и на основе этого что-то сделаю с содержимым подкаталогов).
Я думал, что получить нужные две строки будет легко:
try {
String[] fileNames;
fileNames = getAssets().list("");
for(String name:fileNames){
// process it, e.g. write it out }
} catch (IOException e) {}
Однако то, что я получаю, это что-то вроде AudioSUBdir, dirA, dirB, VideoSUBdir, webkit (вообще нет проклятого webkit!) Кажется, он делает несколько странных вещей одновременно:
- он игнорирует структуру каталогов, т.е. читает даже подкаталоги, где не должен
- он волшебным образом отображает каталог webkit, хотя во всей папке проекта его нет
- он полностью игнорирует каталог "test"
Итак, моих вопросов два (с половиной)
- как мне получить только корневые папки (позже я хочу проверить их на наличие файла folder/data.xml, который будет обработан, и приложение сделает все, что должно)
- любое объяснение происходящего. Теоретически я мог бы иметь дело с тем фактом, что он даже записывает подкаталоги, хотя они мне не нужны. Я мог бы даже смириться с тем фактом, что он игнорирует тестовую папку (возможно, потому, что они пусты? - Ну, пустые, содержащие только подкаталог, а не файл, но в любом случае...) Но откуда, черт возьми, берется папка webkit? Это как-то «постгенерируется» процессом сборки apk?
- У меня такое ощущение, что все подпапки на самом деле свернуты в один корень. Означает ли это, что файлы с одинаковыми именами будут конфликтовать в процессе сборки?
adb shell
? Это дает вам оболочку командной строки Linux для структуры каталогов устройств. Вы можете отcd
до/data/data/<project-name>/assets
просматривать файлы напрямую. - person Code-Apprentice   schedule 09.11.2012