2010-07-10 67 views
1

做Android 2.1开发。任何人都可以向我解释为什么下面的代码生成IOException并且不加载文件?这个确切的代码曾经工作,并据我所知,它应该仍然工作。作为参考,Log.d()命令正确列出了我所期望的所有文件,并且这些文件正确地压缩到我的.APK文件中。Android AssetManager/InputStream异常

 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

终于搞明白了。公然的用户错误,但无法看到树木的森林。 list命令不包含目录名,open命令需要完整的路径名。 Duh :)打开命令需要建立一个包含目录名和文件名的字符串。

+0

所以,马克你的答案是正确的。 – Cristian 2010-07-12 00:52:40

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()+ "'!"); 
    }