转换流:
InputStreamReader:字节流到字符流的桥梁,解码(read既然是读,那么就是“看不懂的”字节→“看得懂的”字符)
OutputStreamWriter:字符流到字节流的桥梁,编码
流的操作规律:这里主要帮助开发者知道用哪个流对象合适,那么做到四个明确:
1.明确源和目的(汇),即根据当前需求分析,看到底是要操作源还是操作目的,还是两者都操作
源:InputStream,Reader(仅这俩体系可用)
目的:OutputStream,Writer
2.明确数据是否是纯文本数据。
源:若是txt,就用Reader,若不是txt,就用InputStream
目的:若是txt,就用Writer,若不是,就用OutputStream
【到这里就可以明确需求中具体要使用哪个体系】
3.明确具体的设备。(如键盘,显示器)
源设备:
硬盘:所有带有File的
键盘:System.in(仅此一个)
内存:数组
网络:Socket流
目的设备:
硬盘:所有带有File的
控制台(显示器):System.out(仅此一个)
内存(往内存里面写):数组
网络(数据发给对方网络):Socket流
4.明确是否需要其他额外功能。
(1)是否需要高效(缓冲技术)?
是,就加上Buffer
(2)其余额外功能会在后面学习。
InputStreamReader:字节流到字符流的桥梁,解码(read既然是读,那么就是“看不懂的”字节→“看得懂的”字符)
OutputStreamWriter:字符流到字节流的桥梁,编码
流的操作规律:这里主要帮助开发者知道用哪个流对象合适,那么做到四个明确:
1.明确源和目的(汇),即根据当前需求分析,看到底是要操作源还是操作目的,还是两者都操作
源:InputStream,Reader(仅这俩体系可用)
目的:OutputStream,Writer
2.明确数据是否是纯文本数据。
源:若是txt,就用Reader,若不是txt,就用InputStream
目的:若是txt,就用Writer,若不是,就用OutputStream
【到这里就可以明确需求中具体要使用哪个体系】
3.明确具体的设备。(如键盘,显示器)
源设备:
硬盘:所有带有File的
键盘:System.in(仅此一个)
内存:数组
网络:Socket流
目的设备:
硬盘:所有带有File的
控制台(显示器):System.out(仅此一个)
内存(往内存里面写):数组
网络(数据发给对方网络):Socket流
4.明确是否需要其他额外功能。
(1)是否需要高效(缓冲技术)?
是,就加上Buffer
(2)其余额外功能会在后面学习。