Android dev,原始资源无法找到

时间:2017-10-08 02:23:37

标签: android inputstream

除了我尝试在res/raw文件夹中打开文件时,我得到了。

InputStream in = Resources.getSystem().openRawResource(R.raw.eng_sample);

例外是:

android.content.res.Resources$NotFoundException: Resource ID #0X89890

我可以在eng_sample.txt中的apk中看到文件res/raw/eng_sample.txt

最重要的是,当我R.raw.并按Ctrl-space时,文件eng_sample会被作为建议。

那么问题是什么?我该如何解决这个问题?

提前谢谢。

P.S。

我还尝试将文件eng_sample.txt放入main/assets。然后使用

获取文件
InputStream in = context.getAssets().open("file:///android_asset/eng_sample.txt

但现在我得到了IO异常。

也许有人可以告诉我如何使这种方法起作用而不是上面的方法?

2 个答案:

答案 0 :(得分:1)

Resources.getSystem()返回一个共享的全局Resources对象,该对象仅提供对系统资源的访问权限(无应用程序资源)。

同样context.getAssets().open(fileName/*not path*/)用于从assets目录获取文件,您应该只提供fileName,而不是整个路径。

要从原始文件打开流,请使用:

context.getResources().openRawResource(R.raw.eng_sample);

答案 1 :(得分:1)

我一直在使用此代码。你可以做这样的事情

BufferedReader mReader = null;
 try {
         mReader = new BufferedReader(
    new InputStreamReader(getAssets().open("eng_sample.txt")));
 String mLine;
 while ((mLine = mReader.readLine()) != null) {
       //do your stuff with line
       ...
    }
  } catch (IOException e) {
    //print stack trace
  } finally {
     if (mReader != null) {
          try {
                   mReader.close();
                } catch (IOException e) {
                 //print stack trace
           }
       }
   }

希望它有所帮助。