使用BufferedReader的时候出现的问题
今天在使用BufferedReader的时候,出现了一个奇怪的问题
有时候换行的时候,行首会少一个字符
开始的代码是这样写的
while( br.read()!=-1 ){ String str = br.readLine(); System.out.println(str); }
问题点:
通过查找资料发现,原来是自己在进行while循环的时候,所写的判断语句 br.read()!=-1 这里出现了问题。
当程序读取时,会先读取一个br.read()一个字去判断是否是最后一个,如果不是,那么接下来将会读取一行,这个时候因为br.read()已经读取了一个字符
再执行br.readLine()的时候自然会少读。
修改后的代码:
public class BufferReaderTest { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new FileReader(new File( "C:\\TestFile.txt"))); String str = null; while ((str = br.readLine()) != null) { System.out.println(str); } } }
原理:直接使用一个字符串去存读到的数据,避免读取一个字符的现象发生。