输入流和输出流相对于内存设备而言.
将外设中的数据读取到内存中:输入 将内存的数写入到外设中:输出。
字符流的由来: 其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表。获取对应的文字。 在对这个文字进行操作。简单说:字节流+编码表
字节流的两个顶层父类: 1,InputStream 2,OutputStream.
字符流的两个顶层父类: 1,Reader 2,Writer
流体系的子类都以父类名作为后缀。 而且子类名的前缀就是该对象的功能。
字节流:
InputStream
OutputStream
字节流: FileInputStream FileOutputStream BufferedInputStream BufferedOutputStream
字符流: Writer Reader FileReader FileWriter BufferedReader BufferedWriter
转换流:
InputStreamReader :字节到字符的桥梁。解码。
OutputStreamWriter:字符到字节的桥梁。编码。
流的操作规律: 需要四个明确即可。
1,明确源和目的(汇) 源:InputStream Reader 目的:OutputStream Writer
2,明确数据是否是纯文本数据。
源:是纯文本:Reader 否:InputStream
目的:是纯文本 Writer 否:OutputStream
3,明确具体的设备。
源设备: 硬盘:File 键盘:System.in 内存:数组 网络:Socket流
目的设备: 硬盘:File 控制台:System.out 内存:数组 网络:Socket流
4,是否需要其他额外功能。
1),是否需要高效(缓冲区); 是,就加上buffer.
2),转换。
什么时候使用转换流呢?
1,源或者目的对应的设备是字节流,但是操作的却是文本数据,可以使用转换作为桥梁。 提高对文本操作的便捷。
2,一旦操作文本涉及到具体的指定编码表时,必须使用转换流 。