2010-06-14 4 views
1
 AssetManager assets = myContext.getAssets(); 
     String[] files = assets.list("MyFolder"); 
     InputStream myInput = assets.open("MyFolder/" + files[0]); 
     int i = myInput.read(); 

В этом случае «i» равно -1, что означает, что ничего не читается.Активы Android Нет значения?

Почему ничего не было, если файл есть, переменные «файлы» также имеют файл.

Нужно ли что-либо делать с файлом, который я помещал в папку «Активы», чтобы получить его для чтения?

ПРИМЕЧАНИЕ: Когда я использую небольшой текстовый файл, он работает. Когда я использую файл размером 10 мегабайт, это не так. (10 мегабайт - это база данных Sqlite, которую мне нужно установить)

ответ

2

Переименуйте файл в XXXXXX.png, чтобы он не был сжат, затем его можно скопировать.

0

Вы не можете поместить 10 МБ-файл в APK. Вам нужно будет разрезать это на 10 файлов размером 1 МБ. Еще лучше распределите базу данных по-другому, например, загрузив ее на SD-карту при первом запуске приложения. Многие пользователи не смогут установить APK, если они такие большие.

+2

Я нашел сообщение инженера Google, в котором говорится, что проблема связана с тем, что система заархивировала ресурсы и не может распаковать файл размером более 1 мегабайта. Решение состоит в том, чтобы переименовать вашу базу данных в XXXXX.png, чтобы она не была сжата. Тогда все работает отлично. –

+0

А, правильно, я забыл про трюк поддельного файла. Мои извинения. – CommonsWare