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

Java Android-根据文件名获取文件的R.raw.value?,java,android,string,file,Java,Android,String,File,我在res/raw文件夹中有一个名为“book1tabs.txt”的文件,但通常我不知道它叫什么。然后我必须做如下的事情: InputStream in = this.mCtx.getResources().openRawResource(R.raw.book1tabs); 但是我想使用一个字符串变量,比如 String param = "book1tabs"; 并且能够打开相同的输入流 有没有办法做到这一点 谢谢你可以这样做 String param = "book1tabs"; Inp

我在res/raw文件夹中有一个名为“book1tabs.txt”的文件,但通常我不知道它叫什么。然后我必须做如下的事情:

InputStream in = this.mCtx.getResources().openRawResource(R.raw.book1tabs);
但是我想使用一个字符串变量,比如

String param = "book1tabs";
并且能够打开相同的输入流

有没有办法做到这一点


谢谢

你可以这样做

String param = "book1tabs";

InputStream in = this.mCtx.getResources().openRawResource(mCtx.getResources().getIdentifier(param,"raw", mCtx.getPackageName()));
getIdentifier()
将从
R.java
返回您传递的特定参数的id

具体的做法如下

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

有关详细信息

我发现此方法对于按字符串名称提取各种资源非常有用

    @SuppressWarnings("rawtypes")
public static int getResourceId(String name,  Class resType){

    try {
        Class res = null;
        if(resType == R.drawable.class)
            res = R.drawable.class;
        if(resType == R.id.class)
            res = R.id.class;
        if(resType == R.string.class)
            res = R.string.class;
                    if(resType == R.raw.class)
            res = R.raw.class;
        Field field = res.getField(name);
        int retId = field.getInt(null);
        return retId;
    }
    catch (Exception e) {
       // Log.d(TAG, "Failure to get drawable id.", e);
    }
    return 0;
}
这将返回数字id(假设存在这样的资源)。对于传入的类
R.drawable
,以及基于xml的ID名称的字符串


我的所有项目中都有这种方法,以便于访问。

哇,那句话太多了。。。但是,如果它能起作用,那就太棒了。我们将测试它。