Java BufferedReader不会读取文本文件中的所有行
我有一个功能Java BufferedReader不会读取文本文件中的所有行,java,Java,我有一个功能 public ArrayList<String> readRules(String src) { try (BufferedReader br = new BufferedReader(new FileReader(src))) { String sCurrentLine; while ((sCurrentLine = br.readLine()) != null) { System.out.println
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;
}
public ArrayList readRules(String src){
try(BufferedReader br=new BufferedReader(new FileReader(src))){
弦电流线;
而((sCurrentLine=br.readLine())!=null){
System.out.println(sCurrentLine);
行。添加(sCurrentLine);
}
}捕获(IOE异常){
e、 printStackTrace();
}
回流线;
}
我的文件有26.400行,但这个函数只读取文件末尾的3400行。
如何读取文件中的所有行。
谢谢
您可能有一个空行或一个被视为null
的行
试一试
编辑:或者,在文本文件中,当一行太长时,编辑器会自动将一行包装为多行。当您不使用返回键时,BufferedReader将其视为一行
是一个很好的工具,可以防止将单行与多行混淆。它根据返回键的用法对行进行编号。也许您可以将输入文件复制/粘贴到记事本+++,并检查行号是否匹配。为什么不使用实用程序方法
Files.readAllLines()
(从Java 7开始提供)
此方法确保在读取所有字节或引发IOException(或其他运行时异常)时关闭文件
使用指定的字符集将文件中的字节解码为字符
public ArrayList<String> readRules(String src) {
return Files.readAllLines(src, Charset.defaultCharset());
}
public ArrayList readRules(String src){
返回Files.readAllLines(src,Charset.defaultCharset());
}
既然您使用Java 7,为什么不改用Files.readAllLines()
?即使不这样做,也应该使用路径
和文件.newbufferedeader()
在哪里定义行
?否则这将读取一个文件的所有行,如果有问题,我将查找其他位置。了解readLine()
method读取一行文本。换行符('\n')、回车符('\r')或紧接着换行符的回车符中的任何一个都会将行视为终止。您是否可以在此处发布第3400行和第3401行?如果有任何特殊字符,请确保高亮显示。他所做的是正确的,BufferedReader.readLine()仅在到达流的结尾时才返回null。检查一下。空行将被检索为空字符串(“
),该字符串不为null
。哪一行会被“视为null
”?谢谢,我还不知道have readAllLines()。您的注释非常有用。您应该将路径
对象作为参数传递给readAllLines()
。不支持字符串。
while(br.hasNextLine())
{
String current = br.nextLine();
}
public ArrayList<String> readRules(String src) {
return Files.readAllLines(src, Charset.defaultCharset());
}