乐趣区

关于人工智能:43-缓冲流

缓冲流是 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

退出移动版