Bufferedreader一次不读取整行?

时间:2018-03-26 12:15:13

标签: java string text-files bufferedreader readline

我正在使用BufferedReader使用Bufferedreader.readLine()逐行读取文本文件,但突然它不会读取整行而只读取第一个字符串

示例:如果文本文件中的第一行是:

[98.0,20.0,-65.0]  [103.0,20.0,-70.0] 5.0 [98.0,20.0,-70.0] ccw

我的代码是:

BufferedReader br = new BufferedReader(new FileReader("path" + "arcs.txt"));
String Line = br.readLine();
System.out.println(Line):

输出将是:

[98.0,20.0,-65.0]

为什么会这样?

2 个答案:

答案 0 :(得分:1)

缓冲区读取器的readLine()方法读取字符串,直到它到达行分隔符,例如\ n或\ r。在[98.0,20.0,-65.0]之后,您的文本文件必须包含这些标记。

答案 1 :(得分:0)

BufferedReader内部工作如下:
将缓冲InputSream或InputFile字符流,直到发生\n(换行)或\r(回车)的实例。如果没有出现这两个字符之一,BufferedReader就会陷入while循环。这种情况的例外是,当输入字符流关闭时。因此,为什么它早期返回的唯一合理解释必须是,在行的第一位之后存在某种行结束字符。为了确保捕获文件中的所有内容,您可以添加周围的while循环。

示例:

// Please ignore the fact that I am using the System.in stream in this example.
try(BufferedReader br = new BufferedReader( new InputStreamReader( System.in) ))
  {

    String line;
    StringBuilder sb = new StringBuilder();
    // Read lines until null (EoF / End of File / End of Stream)
    while((line = br.readLine()) != null)
     {
       // append the line we just read to the StringBuilds buffer
       sb.append(line);
     }
    // Print the StringBuilders buffer as String.
    System.out.println(sb.toString());
  }
  catch ( IOException e )
  {
    e.printStackTrace();
    // Exception handling in general...
  }