java - 如何随机加载多个 .txt 文件中的任何一个

标签 java android android-resources

我是 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/

相关文章:

android - 如何在我的应用程序中组织 SQLite 数据库

java - 位图工厂抛出 FileNotFoundException

android - WARN in logcat ResourceType : For resource . .., entry index(...) is beyond type entryCount(1)

java - 处理 NullPointerException 的最佳层是什么?

java - 制作不可修改的对象

android - 如何在 Jetpack Compose 中围绕 Canvas 移动矩形?

android - AutoCompleteTextView - 选择后显示建议

java - 检测可点击项目上的 throw 手势

java - 我应该如何实现事务数据库EJB 3.0

java - Eclipse:导入中的双分号