缓冲流是Java I/O中的一个重要概念,它能够进步文件读写的性能。在本节中,咱们将具体探讨缓冲流的概念、应用办法以及实例。

缓冲流有两种类型:缓冲字节流和缓冲字符流。缓冲字节流包含BufferedInputStreamBufferedOutputStream,而缓冲字符流包含BufferedReaderBufferedWriter

4.3.1 为什么应用缓冲流?

当咱们从磁盘读取文件或向磁盘写入文件时,磁盘的读写速度远低于内存的读写速度。如果咱们一次只读写一个字节或字符,会导致频繁地与磁盘进行数据交换,这样效率会很低。为了进步文件读写性能,咱们能够应用缓冲流。缓冲流应用内存缓冲区,能够一次性读取或写入大量数据,从而缩小与磁盘的交互次数,进步整体性能。

4.3.2 缓冲字节流

缓冲字节流包含BufferedInputStreamBufferedOutputStream,它们别离继承自InputStreamOutputStream。咱们能够把它们包装在其余输入输出流之上,为它们提供缓冲性能。

4.3.2.1 应用BufferedInputStream和BufferedOutputStream

让咱们看一个应用BufferedInputStreamBufferedOutputStream进行文件复制的示例:

import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class Main {    public static void main(String[] args) {        try {            FileInputStream fis = new FileInputStream("input.txt");            BufferedInputStream bis = new BufferedInputStream(fis);            FileOutputStream fos = new FileOutputStream("output.txt");            BufferedOutputStream bos = new BufferedOutputStream(fos);            int data;            while ((data = bis.read()) != -1) {                bos.write(data);            }            bis.close();            bos.close();        } catch (IOException e) {            e.printStackTrace();        }    }}

在这个示例中,咱们首先创立了一个FileInputStream和一个FileOutputStream,而后应用BufferedInputStreamBufferedOutputStream别离对它们进行了包装。接下来,咱们像平常一样执行读写操作。在读写过程中,BufferedInputStreamBufferedOutputStream会主动为咱们治理缓冲区。

4.3.3 缓冲字符流

缓冲字符流包含BufferedReaderBufferedWriter,它们别离继承自ReaderWriter。它们的应用办法与缓冲字节流相似。

4.3.3.1 应用BufferedReader和BufferedWriter

让咱们看一个应用BufferedReaderBufferedWriter进行文件复制的示例:

import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class Main {    public static void main(String[] args) {        try {            FileReader fr = new FileReader("input.txt");            BufferedReader br = new BufferedReader(fr);            FileWriter fw = new FileWriter("output.txt");            BufferedWriter bw = new BufferedWriter(fw);            int data;            while ((data = br.read()) != -1) {                bw.write(data);            }            br.close();            bw.close();        } catch (IOException e) {            e.printStackTrace();        }    }}

在这个示例中,咱们首先创立了一个FileReader和一个FileWriter,而后应用BufferedReaderBufferedWriter别离对它们进行了包装。接下来,咱们像平常一样执行读写操作。在读写过程中,BufferedReaderBufferedWriter会主动为咱们治理缓冲区。

4.3.4 小结

通过本节的学习,咱们理解了缓冲流的概念、作用以及如何应用缓冲字节流和缓冲字符流。缓冲流能够无效地进步文件读写性能,缩小磁盘与内存之间的交互次数。在理论开发中,咱们通常会应用缓冲流来操作文件,以进步程序的运行效率。

请务必把握以下重点:

  1. 缓冲流的作用:通过内存缓冲区进步文件读写性能。
  2. 缓冲字节流:BufferedInputStreamBufferedOutputStream,用于解决字节输入输出。
  3. 缓冲字符流:BufferedReaderBufferedWriter,用于解决字符输入输出。
  4. 如何应用缓冲流:将缓冲流包装在其余输入输出流之上,而后像平常一样执行读写操作。缓冲流会主动治理缓冲区。

心愿这些示例和解释能帮忙您更好地了解和把握缓冲流的应用。请尝试编写一些理论的代码,加深对缓冲流的了解。
举荐浏览:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g