假设我在原始文件夹中有100个.mp3文件
对于单个已知文件可以读取文件可以使用getResources()。openRawResource(R.raw.myfilename)
但是我希望获取原始文件夹中的所有文件名,然后从该列表中选择一个随机文件
任何帮助?
答案 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
答案 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()
。