我需要读取文本文件并使用行中的常用文本进行拆分,然后打印拆分文本的一部分。这工作正常,但只对文本中的第一行执行此操作。 但是,如果我打印的线条没有分割部分,则会正确打印。请问我做错了什么?
文件样本:(我想用“单词”分割)
第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();
答案 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。