我正在使用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]
为什么会这样?
答案 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...
}