将行从txt存储到ArrayList时内存不足

时间:2013-06-10 15:42:09

标签: java android io

我真的不知道这有什么问题,我想逐行读取txt文件(目前只有 ONLY 10 行)某些arraylist中的每一行称为mChoices。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.quiz_vieaaaw);
        try {
            InputStream inputStream = getApplicationContext().getAssets().open("questions.txt");
            BufferedReader buffReader = new BufferedReader(new InputStreamReader(inputStream));
            String line = buffReader.readLine();
            while (line != null) {
            mChoices.add(line);
            }
            inputStream.close();
        } 
        catch (IOException e) {
            e.printStackTrace();
        }
        for (int i=0; i < mChoices.size(); i++) {
            String line = mChoices.get(i);
            Log.d("LINE", line);
        }
    }

}

我在13571696字节的分配上没有内存。

如果我在条件时注释掉它只返回第一行,但显然我想要txt中的每一行。

由于

1 个答案:

答案 0 :(得分:5)

while (line != null) {
     mChoices.add(line);
 }

每次都需要更新一行,否则你将始终读取第一行(在你的情况下不是空的,所以你要写第一行的无限次,直到有可用的内存)。
要在每次迭代时更新线,请执行:

String line;
while ((line = buffReader.readLine()) != null) {
        mChoices.add(line);
}