Android - 根据文件名获取文件的R.raw.value?

JDS*_*JDS 2 java string android file

我在res/raw文件夹中有一个名为"book1tabs.txt"的文件,但总的来说我不知道​​它叫什么.然后我必须做以下事情:

InputStream in = this.mCtx.getResources().openRawResource(R.raw.book1tabs);
Run Code Online (Sandbox Code Playgroud)

但我想使用字符串变量,比如

String param = "book1tabs";
Run Code Online (Sandbox Code Playgroud)

并且能够打开相同的输入流.

有没有办法做到这一点?

谢谢

Moh*_*ikh 6

你可以做这样的事情

String param = "book1tabs";

InputStream in = this.mCtx.getResources().openRawResource(mCtx.getResources().getIdentifier(param,"raw", mCtx.getPackageName()));
Run Code Online (Sandbox Code Playgroud)

getIdentifier()将返回R.java您传递的特定参数的id .

它究竟会做什么如下

  • 映射包名称
  • 导航到您提供的typeDef
  • 查找您在typeDef中提供的资源名称

有关更多信息,请访问http://developer.android.com/reference/android/content/res/Resources.html