获取android中raw文件夹中的所有文件

时间:2016-01-21 05:08:41

标签: android android-mediaplayer directory

假设我在原始文件夹中有100个.mp3文件

对于单个已知文件可以读取文件可以使用getResources()。openRawResource(R.raw.myfilename)

但是我希望获取原始文件夹中的所有文件名,然后从该列表中选择一个随机文件

任何帮助?

3 个答案:

答案 0 :(得分:4)

public void listRaw(){
    Field[] fields=R.raw.class.getFields();
    for(int count=0; count < fields.length; count++){
        Log.i("Raw Asset: ", fields[count].getName());
    }
}

由于实际文件不仅仅是在文件系统上,而是在手机上,因此名称无关紧要,您需要通过分配给该资源名称的整数来引用它们。在上面的例子中,你可以得到这个整数:

int resourceID=fields[count].getInt(fields[count]);

这与您通过引用R.raw.whateveryounamedtheresource

获得的int相同

refer

答案 1 :(得分:0)

为了完整起见,这与Kotlin相同:

package com.kana_tutor.KanaCard

import android.util.Log
import java.lang.reflect.Field

fun listRaw() {
    val fields: Array<Field> =
        com.kana_tutor.KanaCard.R.raw::class.java.getFields()
    fields.forEach {field ->
        Log.d("Knames", String.format(
                "name=\"%s\", id=0x%08x",
                field.name, field.getInt(field))
        )
    }
}

答案 2 :(得分:0)

要补充@EminemT所说的内容,R.raw.class.getFields()似乎提供了android使用的内部文件。要获取放入res / raw中的文件,请改用R.raw.class.getDeclaredFields()