为什么Bufferedreader会丢失句子

时间:2016-11-04 11:37:32

标签: java android bufferedreader

我正在试图从我在Android中的txt文件中获取句子,它会逐行获得句子,但其中一些却丢失了?为什么?这是我的代码:

 public ArrayList<String> sorulist = new ArrayList<String>();
    ........
         try {


  InputStream ins = getResources().openRawResource(
                        getResources().getIdentifier("sorular",
                                "raw", getPackageName()));
                InputStreamReader InputRead= new InputStreamReader(ins);

                BufferedReader r = new BufferedReader(InputRead);

                while ((r.readLine()) != null) {
                    sorulist.add(r.readLine());
                }

                InputRead.close();
            } catch (Exception e) {
                e.printStackTrace();
                Toast.makeText(getBaseContext(), "nothing!",
                        Toast.LENGTH_SHORT).show();
            }

当我尝试使用此代码显示列表时:

 sorutxt.setText(sorulist.toString());

我在我的textview中得到这个,所以这是列表:

[Yaptırımı manevi olan kurallar hangileridir?,Bir ülkede uygulanan, halen yürürlükteki yazılı ve yazısız hukuk kurallarına ne ad verilir?,null]

但是列表中的内容丢失了,因为我原来的txt文件是这样的:

Sosyal hayatı düzenleyen kurallar hangileridir?
Yaptırımı manevi olan kurallar hangileridir?
Hukukun yaptırım türleri hangileridir?
Bir ülkede uygulanan, halen yürürlükteki yazılı ve yazısız hukuk kurallarına ne ad verilir?
"Pozitif hukuk" ile "tabii hukuk" arasındaki fark aşağıdaki seçeneklerden hangisidir?

我认为缺少索引0,2和4项?我的代码有什么问题? 谢谢大家

1 个答案:

答案 0 :(得分:0)

while ((r.readLine()) != null) {
        sorulist.add(r.readLine());
}

基本上你因为if而放弃了所有其他行。 readLine()实际读取一行,所以当你下次调用它时,你已经通过了第一行。因此,如果读取的行不为null,则代码会运行。我将读取下一行并将其放入列表中。

修复可能是:

String lineFromFile;
while ((lineFromFile = r.readLine()) != null) {
        sorulist.add(lineFromFile);
}