以一个装了FileReader字符输入流的BufferedReader包装流为例,如果在同一个进程存在多次读取的情况,那么每次读取都是在上一次的结束位置开始的,而不是再从文件头开始读。
如果中间又有从文件头开始读的需求,需要新建一个另外一个包装流。
public class Test {
public static void main(String[] args) throws IOException {
// System.out.println("\r\n2333");
/**
* 如下证明同一个流read方法只会接着往下读取文件,而不是每次从头开始读取。
* 如果要从头开始读,需要新建一个流。
* */
String filePath = "D:\\chapter19_case\\chapter19_case02.txt";
BufferedReader bw,bw2;
bw = new BufferedReader(new FileReader(filePath));
bw2 = new BufferedReader(new FileReader(filePath));
String line1,line2,line3;
line1 = bw.readLine();
bw.readLine();
line2 = bw.readLine();
line3 = bw2.readLine();
System.out.println("============");
System.out.println(line1);
System.out.println(line2);
System.out.println(line3);
bw.close();
bw2.close();
}
}
显示结果为
============
package com.gxmedu.buffered_reader;
import java.io.BufferedReader;
package com.gxmedu.buffered_reader;
源文件为