InputStream.read()
OutputStream.write()
操作的都是单个字符,每次方法调用都需要进入内核获取一个字节的数据。
这在大多数操作系统上,内核会对I/O进行缓冲,这个操作并不会每次都触发磁盘读取。
因为这个缓冲区是保存在内核中,而不是在应用程序中,
所以每次读取一个字节意味着方法执行一次开销巨大的系统调用。
对于文件和套接字,压缩和字符编码的内部操作,必须适当的进行缓冲操作。
对于二进制数据的文件IO或者字符数据的文件I/O,总是需要BufferedInputStream,BufferedOutputStream,BufferedReader来包装底层的文件流
ByteArrayInputStream
这些类本质上只是更大的内存缓冲区
合理设置缓冲区大小提高读取性能
如果设置小:会频繁的从底层数据源中读取数据
如果设置大:更多的内存空间,系统整体性能有影响
always beta