我有一个功能。
public ArrayList<String> readRules(String src) {
try (BufferedReader br = new BufferedReader(new FileReader(src))) {
String sCurrentLine;
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
lines.add(sCurrentLine);
}
} catch (IOException e) {
e.printStackTrace();
}
return lines;
}
我的文件有26.400行,但此功能只读取文件末尾的3400行。 如何读取文件中的所有行。 谢谢!
答案 0 :(得分:1)
为什么不使用实用方法Files.readAllLines()
(自Java 7起可用)?
此方法可确保在读取所有字节或抛出IOException(或其他运行时异常)时关闭文件。
使用指定的字符集将文件中的字节解码为字符。
public ArrayList<String> readRules(String src) {
return Files.readAllLines(src, Charset.defaultCharset());
}
答案 1 :(得分:0)
while ((sCurrentLine = br.readLine()) != null)
您可能有空行或被视为null
的行。
尝试
while(br.hasNextLine())
{
String current = br.nextLine();
}
编辑或者,在文本文件中,当行太长时,编辑器会自动将一行包装成多行。如果不使用return key
,则会被BufferedReader视为单行。
Notepad++是防止单行与多行混淆的好工具。它根据返回键的用法对行进行编号。也许您可以将输入文件复制/粘贴到Notepad++
并检查行号是否匹配。