2010-06-13 3 views
22
InputStream myInput = myContext.getAssets().open("MyFolder/" + "MyFile.db3"); 

У меня есть файл в папке с ресурсами в подпапке, как указано выше. Однако он не получает файл, есть ли специальный способ указать подпапку в папке с ресурсами?Android Активы с дополнительными папками

Ian

+1

Это выглядит правильно - есть исключения, такие как исключение IOException? –

+0

Да, но странно исключение пустое, нет «причины» –

+0

Если вы можете вставить трассировку стека в исходный вопрос, это было бы очень полезно. –

ответ

39

Edit: был неправ подпапок.
Этот код прекрасно работает на 1.5 (для файла sample.txt помещенного под sub папку в assets):

InputStream is = getAssets().open("sub/sample.txt"); 
BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
String line = null; 
while ((line = br.readLine()) != null) { 
    Log.e("wtf", line); 
} 
br.close(); 

Вы уверены, что у вас есть имена правильно?

+0

Документы говорят, что вы можете. –

5

Является ли ваш файл активов более 1 МБ?

Я замечаю, что получаю такое же нечетное, пустое исключение IOException, если попытаюсь открыть актив, превышающий этот размер. Тот факт, что он находится в подпапке, может быть красной селедкой. Я пытаюсь открыть большой текстовый файл, чтобы я мог преодолеть этот предел, разделив его. Можете ли вы сделать что-то подобное с вашим .db3-файлом?

+0

omfg wtf !!! это глупая ошибка, и они должны это исправить. Большое вам спасибо за написание этого ответа, это, безусловно, тот же случай для меня, когда у меня был .ogg-файл под «music/blah.ogg», который не работал, потому что он был более 1 мб, а другой файл «music/foo.ogg "работает, и это всего лишь 26 кб ... –

5
"MyFolder/" + "MyFile.db3" 

Имя файла для файлов, добавленных в папку активов, должно быть в строчной букве. , поэтому имя файла, такого как MyFolder и Myfile.db3, недействительно. Переименуйте их в «myfolder» и «myfile.db3», тогда все будет хорошо.

Смежные вопросы