缓冲:
它是物理内存存储区域,用于在数据从一个位置移动到另一个位置时临时存储数据。 在大多数情况下,物理内存存储将是RAM(随机存取存储器)。
但是从这个问题的上下文中,在读/写数据时使用了Buffer。 将数据从一个地方移动到另一个地方时不需要使用它。
缓冲区示例:如果您的系统有4 GB RAM,则系统可以为缓冲区分配4 KB内存(RAM)。 KB - Kilobyte(s),GB - Gigabyte(s)
I / O流(或)流:
I / O Stream表示输入源或输出目标。 一条小溪 可以代表许多不同类型的来源和目的地, 包括磁盘文件,设备,其他程序和内存阵列。
I / O表示输入/输出。
因此,输入流可以是磁盘文件,网络连接等输入源。
并且,输出流可以是输出目的地,如磁盘文件,网络连接等。
根据JAVA官方文档,Streams有3种类型。
字节流(读取或写入字节)
字符流(读或写字符)
缓冲流(从缓冲区读取或写入,以提高效率)
字节流:
它们执行8位字节的输入和输出。 所有字节流类 是来自InputStream和OutputStream的后代。
字节输入流类获取输入作为原始字节。字节输出流类将输出作为原始字节。
BufferedReader - 直接已知子类
AudioInputStream, ByteArrayInputStream, FileInputStream, FilterInputStream, InputStream, ObjectInputStream, PipedInputStream, SequenceInputStream, StringBufferInputStream.
BufferedReader - 直接已知子类
ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream, OutputStream, PipedOutputStream
角色流:它们是Byte Streams之上的一层。 它们使用字符编码将字节(二进制数据)转换为字符,将字符转换为字节。
所有字符流类都来自Reader和Writer。
BufferedReader - 直接已知子类
BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader
BufferedReader - 直接已知子类
BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter
Byte Streams& Character Streams使用无缓冲的I / O.
这意味着处理每个读或写请求 直接由底层操作系统。 这可以使程序更少 高效,因为每个这样的请求经常触发磁盘访问,网络 活动,或其他相对昂贵的操作。 为了减少这种开销,Java平台实现了缓冲 I / O流。
缓冲流:
缓冲输入流从称为缓冲区的存储区读取数据; 仅当缓冲区为空时才调用本机输入API。
类似地,缓冲输出流将数据写入缓冲区,并且 仅在缓冲区已满时才调用本机输出API。
程序可以将无缓冲的流转换为缓冲流使用包装习惯用法,将无缓冲的流对象传递给缓冲流类的构造函数。
例:
inputStream = new BufferedReader(new FileReader("xanadu.txt"));
outputStream = new BufferedWriter(new FileWriter("characteroutput.txt"));
有4个缓冲流类用于包装无缓冲的流:
要创建缓冲的字节流,请使用BufferedReader和BufferedWriter类。
要创建缓冲字符流,请使用BufferedReader和BufferedWriter类。