2010-07-10 1 views
1

Выполнение Android 2.1 разработки. Может ли кто-нибудь объяснить мне, почему следующий код генерирует IOException и не загружает файл? Этот точный код работал, и, насколько я могу судить, он все равно должен работать. Для справки, команда Log.d() правильно перечисляет все файлы, которые я ожидаю, и файлы правильно заархивированы в мой .APK-файл.Android AssetManager/InputStream Exception

 AssetManager assetManager = mContext.getAssets(); 
     String[] files = null; 
     try 
      { 
      files = assetManager.list("meshes"); 
      for (int i = 0; i < files.length; i++) 
       Log.d(TAG, files[i]); 
      InputStream is = assetManager.open(files[0]); 
      } 
     catch (IOException e) 
      { 
      Log.e(TAG, "Could not load '" + e.getMessage()+ "'!"); 
      } 

Любые идеи о том, почему это происходит сейчас? Файлы, которые я пытаюсь прочитать, представляют собой крошечные (пару байтов) двоичные файлы.

ответ

2

Наконец-то выяснилось. Ошибка пользователя Blatant, но не видел лес для деревьев. Команда list не включает имя каталога, команда open ожидает полный путь. Duh :) Команда open должна создать строку, содержащую имя каталога и имя файла.

+0

Итак, отметьте вы ответите, как правильно. – Cristian

1

может быть, вы можете использовать как этот

AssetManager assetManager = this.getAssets(); 
    try{ 
      InputStream is = assetManager.open("tes.png"); 

      Log.d("Success", "Read"); 
    }catch (IOException e){ 
      Log.e("Failed", "Could not load '" + e.getMessage()+ "'!"); 
    }