我是 java 的新手,必须为我的项目制作 android 应用程序。那么,我如何随机加载我在原始文件夹中作为选项提供的许多 .txt 文件中的任何一个。这对你们来说应该是小菜一碟!
InputStream questions = this.getBaseContext().getResources()
.openRawResource(R.raw.questions);
bReader = new BufferedReader(new InputStreamReader(questions));
使用上述方法,我只能加载一个文件:res>raw 文件夹中的questions.txt。
但是,我想随机加载这五个 txt 文件中的任何一个 (res/raw/questionset1,questionset2,questionset3,questionset4,questionset5)获得所问问题的变化
有关我如何加载单个文件的完整代码可以在下面看到
private void loadQuestions() throws Exception {
try {
InputStream questions = this.getBaseContext().getResources()
.openRawResource(R.raw.questions);
bReader = new BufferedReader(new InputStreamReader(questions));
StringBuilder quesString = new StringBuilder();
String aJsonLine = null;
while ((aJsonLine = bReader.readLine()) != null) {
quesString.append(aJsonLine);
}
Log.d(this.getClass().toString(), quesString.toString());
JSONObject quesObj = new JSONObject(quesString.toString());
quesList = quesObj.getJSONArray("Questions");
Log.d(this.getClass().getName(),
"Num Questions " + quesList.length());
} catch (Exception e){
} finally {
try {
bReader.close();
} catch (Exception e) {
Log.e("", e.getMessage().toString(), e.getCause());
}
}
}
最佳答案
您不应为此目的使用原始资源。将您的文件放在 Assets
文件夹的子文件夹中,例如问题
。稍后,做这样的事情:
String [] list = getAssets().list("questions");
我认为这是此处的路径格式,但请注意,我是手动输入的。它可能是“/问题”或类似的东西。此外,必须在 Context
对象上或从对象调用 getAssets(),因此请在您的 Activity
中执行此操作。
这将返回子目录中的文件列表。现在使用 Random() 对象选择一个介于 0 和 list.length
之间的数字,您就得到了随机文件 :-) 用 getAssets().open(path +/* your随机字符串文件名 */)
关于java - 如何随机加载多个 .txt 文件中的任何一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31131123/