IO流学习之字符流(三)

IO流之字符流缓冲区:

概念:

流中的缓冲区:是先把程序需要操作的数据保存在内存中,然后我们的程序读写数据的时候,不直接和持久设备之间交互,而改成和内存中的数据进行交互。

缓冲区:它就是临时存储数据,当我们需要操作数据的时候,直接不是面对的是真实保存数据的终端,而是已经把数据缓存起来的那个容器。

字符流缓冲区:是为了高效而设计的。内部维护了一个数组,真正的读写依赖的普通的字符流。

1、BufferedReader类:

常用方法:

 字符流缓冲区输入数据步骤:

  • 指定文件位置
  • 创建字符流输入对象
  • 创建缓存区对象
  • 调用方法进行读取数据
  • 关闭资源

代码案例:

代码:

 1 package InputOutput;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.FileReader;
 5 import java.io.IOException;
 6 
 7 public class BufferedReaderDemo {
 8     public static void main(String[] args) throws IOException {
 9         // 指定文件路径
10         String path = "E:\JavaCodeDemo\InputOutput\filewriter\BufferedReader.txt";
11         // 创建字符输入流
12         FileReader reader = new FileReader(path);
13         // 创建字符输入流缓冲区
14         BufferedReader rb = new BufferedReader(reader);
15         String flag = null;
16         // readLine一行一行读取文件
17         while ((flag = rb.readLine()) != null) {
18             System.out.println(flag);
19         }
20         rb.close();
21         // 流程成功输出Success
22         System.out.println("Success");
23     }
24 }

重要方法:ReadLine()

2、BufferedWriter类

 常用方法:

代码案例:

代码:

 1 package InputOutput;
 2 
 3 import java.io.BufferedWriter;
 4 import java.io.FileWriter;
 5 import java.io.IOException;
 6 
 7 public class BufferedWriterDemo {
 8     public static void main(String[] args) throws IOException {
 9         // 指定文件位置
10         String path = "E:\JavaCodeDemo\InputOutput\filewriter\BufferedWriter.txt";
11         // 创建字符输出流
12         FileWriter writer = new FileWriter(path);
13         // 创建字符输出流缓冲区
14         BufferedWriter bw = new BufferedWriter(writer);
15         // 写入
16         for (int i = 0; i < 4; i++) {
17             bw.write("test :" + i);
18             //newLine()实现换行
19             bw.newLine();
20         }
21         //关闭资源
22         bw.flush();
23         bw.close();
24         // 流程成功输出Success
25         System.out.println("Success");
26     }
27 }

 3、字符流缓冲区实现文档复制:

代码案例:

 1 package InputOutput;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.BufferedWriter;
 5 import java.io.FileReader;
 6 import java.io.FileWriter;
 7 import java.io.IOException;
 8 
 9 //字符输入流和输出流缓冲区实现复制文件
10 public class BufferReaderWriter {
11     public static void main(String[] args) throws IOException {
12         // 指定输入流文件位置
13         String path1 = "E:\JavaCodeDemo\InputOutput\filewriter\BufferedReaderCopy.txt";
14         // 指定输出流文件位置
15         String path2 = "E:\JavaCodeDemo\InputOutput\filewriter\BufferedWriterCopy.txt";
16         // 创建字符输入流
17         FileReader reader = new FileReader(path1);
18         // 创建字符输出流
19         FileWriter writer = new FileWriter(path2);
20         // 想追加写入就加上true
21         // FileWriter writer = new FileWriter(path2,true);
22         // 创建输入缓冲区
23         BufferedReader br = new BufferedReader(reader);
24         // 创建输出缓冲区
25         BufferedWriter bw = new BufferedWriter(writer);
26         String flag = null;
27         while ((flag = br.readLine()) != null) {
28             bw.write(flag);
29             bw.newLine();
30             bw.flush();
31         }
32         // 关闭资源
33         bw.close();
34         br.close();
35         // 流程成功输出Success
36         System.out.println("Success");
37     }
38 }

注意:因为缓冲区的Close方法会自动调用字符流的Close方法,因此最后关闭资源只需要关闭缓冲区的Close()方法即可!



原文地址:https://www.cnblogs.com/Bernard94/p/11256806.html