Readline()只读取第一行

时间:2015-02-18 11:34:21

标签: java

我需要读取文本文件并使用行中的常用文本进行拆分,然后打印拆分文本的一部分。这工作正常,但只对文本中的第一行执行此操作。 但是,如果我打印的线条没有分割部分,则会正确打印。请问我做错了什么?

文件样本:(我想用“单词”分割)

第1行这段文字长:7个字。我需要学习如何编程。

第2行现在我们有长度的文字:3个字。无论用什么词,我都必须编程

FileInputStream fis = new FileInputStream(fin);
//Construct BufferedReader from InputStreamReader
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
String line = null;
ArrayList<String> txt1 = new ArrayList<>();
while ((line = br.readLine()) != null) {
    String[] pair = line.split("words");
    txt1.add(pair[1]);
    System.out.println(txt1);
    //System.out.println(line);
}

br.close();

1 个答案:

答案 0 :(得分:0)

给定以下单元测试,通过StringInputStream模拟文件输入:

@Test
public void test() throws IOException
{
    String fileContent = "This text is of length: 7 words.\r\nI need to learn how to program and one day.";
    StringInputStream stream = new StringInputStream(fileContent);
    BufferedReader br = new BufferedReader(new InputStreamReader(stream));
    String line = null;
    ArrayList<String> txt1 = new ArrayList<>();
    while ((line = br.readLine()) != null) {
        String[] pair = line.split("words");
        txt1.add(pair[1]);
        System.out.println(txt1);
        //System.out.println(line);
    }
}

第一行将分为

"This text is of length: 7 " and
"."

由于您将项目[1]放入数组列表中,因此它只包含一个点。

第二行将分为

"I need to learn how to program and one day."

只。没有第二项,因此访问[1]会导致ArrayIndexOutOfBoundsException。