缓冲流是Java I/O中的一个重要概念,它能够进步文件读写的性能。在本节中,咱们将具体探讨缓冲流的概念、应用办法以及实例。
缓冲流有两种类型:缓冲字节流和缓冲字符流。缓冲字节流包含BufferedInputStream
和BufferedOutputStream
,而缓冲字符流包含BufferedReader
和BufferedWriter
。
4.3.1 为什么应用缓冲流?
当咱们从磁盘读取文件或向磁盘写入文件时,磁盘的读写速度远低于内存的读写速度。如果咱们一次只读写一个字节或字符,会导致频繁地与磁盘进行数据交换,这样效率会很低。为了进步文件读写性能,咱们能够应用缓冲流。缓冲流应用内存缓冲区,能够一次性读取或写入大量数据,从而缩小与磁盘的交互次数,进步整体性能。
4.3.2 缓冲字节流
缓冲字节流包含BufferedInputStream
和BufferedOutputStream
,它们别离继承自InputStream
和OutputStream
。咱们能够把它们包装在其余输入输出流之上,为它们提供缓冲性能。
4.3.2.1 应用BufferedInputStream和BufferedOutputStream
让咱们看一个应用BufferedInputStream
和BufferedOutputStream
进行文件复制的示例:
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
,而后应用BufferedInputStream
和BufferedOutputStream
别离对它们进行了包装。接下来,咱们像平常一样执行读写操作。在读写过程中,BufferedInputStream
和BufferedOutputStream
会主动为咱们治理缓冲区。
4.3.3 缓冲字符流
缓冲字符流包含BufferedReader
和BufferedWriter
,它们别离继承自Reader
和Writer
。它们的应用办法与缓冲字节流相似。
4.3.3.1 应用BufferedReader和BufferedWriter
让咱们看一个应用BufferedReader
和BufferedWriter
进行文件复制的示例:
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
,而后应用BufferedReader
和BufferedWriter
别离对它们进行了包装。接下来,咱们像平常一样执行读写操作。在读写过程中,BufferedReader
和BufferedWriter
会主动为咱们治理缓冲区。
4.3.4 小结
通过本节的学习,咱们理解了缓冲流的概念、作用以及如何应用缓冲字节流和缓冲字符流。缓冲流能够无效地进步文件读写性能,缩小磁盘与内存之间的交互次数。在理论开发中,咱们通常会应用缓冲流来操作文件,以进步程序的运行效率。
请务必把握以下重点:
- 缓冲流的作用:通过内存缓冲区进步文件读写性能。
- 缓冲字节流:
BufferedInputStream
和BufferedOutputStream
,用于解决字节输入输出。 - 缓冲字符流:
BufferedReader
和BufferedWriter
,用于解决字符输入输出。 - 如何应用缓冲流:将缓冲流包装在其余输入输出流之上,而后像平常一样执行读写操作。缓冲流会主动治理缓冲区。
心愿这些示例和解释能帮忙您更好地了解和把握缓冲流的应用。请尝试编写一些理论的代码,加深对缓冲流的了解。
举荐浏览:
https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA
https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g