以前学习java的时候也没有太在意,直到最近做项目时使用了才发现这个问题,总是第一个字符输不出来
bufferedreader这个类借用别人的话来说,就是一个包装类
它可以包装字符流,将字符流放入缓存里,先把字符读到缓存里,到缓存满了或者你flush的时候,再读入内存,就是为了提高读的效率而设计的。
读取一个txt文件,方法很多种而我使用的是字符流来读取
int c;
FileReader file = new FileReader("D:\\emDemo.java");
BufferedReader br = new BufferedReader(file);
while((c=br.read())!=-1){
System.out.println(br.readLine());
}
发现每行的第一个字符都没有显示出来,后来发现 c=br.read())!=-1 每次都会先读取一个字节出来,所以后面的br.readLine());
读取的就是每行少一个字节
所以,应该使用
String input = null;
while ((input=br.readLine())!=null){
System.out.println(input);
}
这样就能解决了