IO流基础特性 使用缓冲技术复制文本文件原理浅析

时间:2022-10-01 21:02:19


1.创建一个字符输入流对象FileReader fr = new FileReader("source.txt");

并将该流对象与要读取的源文件进行关联。
2.创建一个缓冲字符输入流,将字符输入流对象作为其构造函数参数传递,表明缓冲该流对象
BufferedReader bufr = new BufferedReader(fr);
3.创建一个字符输出流对象 FileWriter fw = new FileWriter("Target.txt");
4.创建一个字符缓冲字符输出流对象BufferedWriter = bufw = new BufferedWriter(fw);
5.先通过Reader的read()方法,将文本文件一个字符一个字符的存入缓冲字符输入流对象的缓冲区中,
其实缓冲字符流的缓冲区其实就是一个数组  (这一步是底层操作,不需要在代码中显示)
6.然后通过bufr.read()  这个read()方法是从缓冲区中读取文本文件,所以该方法覆盖了父类的read方法
7.其实现在已经可以对文本数据进行操作,但是根据文本文件的“行”特点,可以对文本进行一行一行读取
所以缓冲流对象又有了一个新方法 readLine()
8.所以在bufr.read()时,将一行数据读取到一个临时容器中
然后通过readLine()方法,将这一行数据读取出来
String line = null;
line = bufr.readLine();
9.然后再将行数据从缓冲字符输出流的缓冲区中写入目标文件中去
bufw.write(line);该write方法就是父类Writer的方法

代码实例:
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("source.txt");
BufferedReader bufr = new BufferedReader(fr);

FileWriter fw = new FileWriter("Target.txt");
BufferedWriter bufw = new BufferedWriter(fw);


String line = null;
while((line = bufr.readLine()) != null){
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
}