java-io 缓冲流
字节流和字符流在输入输出时使用的字节大小是不同的,字节流是按照1个字节(8位)读取和写入的;字符流是按照2个字节(16位)读取和写入的
缓冲流
缓冲流(为了提高性能,流在内存中建立缓冲区,减少磁盘io次数)
缓冲流中的缓冲区实际上是一个内存区域,但它并不是直接将操作系统的文件缓存到内存中。
当你使用缓冲流(比如 BufferedInputStream 或 BufferedOutputStream)时,这些流会在内部创建一个缓冲区,缓冲区的大小是可以设置的,默认大小为8KB或者系统相关的值。这个缓冲区并非直接操作系统文件缓存,而是为了减少对底层 I/O 操作的频繁访问。
当你通过缓冲流进行读取操作时,它会尽可能多地读取数据到缓冲区中,然后在内存中进行操作。当缓冲区的数据被读取完毕后,缓冲流再次从文件中读取数据填充到缓冲区,以此类推。
同样,写入操作也是类似的过程。当使用缓冲流进行写操作时,数据首先被写入到缓冲区,当缓冲区满了或者手动调用了 flush() 方法时,缓冲流将缓冲区中的数据一次性写入到底层的文件或目标中。
所以,虽然缓冲流使用了内存中的缓冲区,但它并不直接将操作系统的文件缓存到内存中,而是通过内存缓冲区来提高 I/O 操作的效率,减少了对底层系统资源的频繁访问。
- BufferedInputStream/BufferedOutputStream
- BufferedReader/BufferedWriter
废话短说