1.字节流
(1)InputStream类:
FileInputStream类:文件输入流
FilterInputStream类:过滤输入流
BufferedInputStream类:缓冲输入流
(2)OutputSream类:输出字节流的的超类(抽象类)
FileOutputStream类:文件输出流
FilterOutputStream类:过滤输出流
BufferedOutputStream类:缓冲输出流
2.字符流
(1)Reader:读取字符流(抽象类)。
InputStreamReader:字节流通向字符流的桥梁(转换流)
FileReader:用来读取字符文件的便捷类
BufferedReader:缓冲字符输入流
(2)Writer:写入字符流(抽象类)。
OutputStreamWriter:字符流通向字节流的桥梁(转换流)
FileWriter:用来写入字符文件的便捷类
BufferedWriter:缓冲字符输出流
3 IO对象的选择
(1)你操作的数据到底是数据源还是数据目的
源:读(InputStream Reader )
数据目的:写(OutputStream Writer)
明确需求,到底是读还是写。
(2)要操做设备上的数据是字节数据还是文本数据
数据源:字节:InputStream 文本:Reader
数据目的:字节:OutputStream 文本:Writer
(3)你操作的数据所在设备
源: 硬盘:File开头的对象
内存:数组,字符串
键盘:System.in
网络:Socket
目的: 硬盘:File开头的对象
内存:数组,字符串
显示器:System.out
网络:Socket
(4)是否需要使用额外功能?
需要转换?----》转换流
需要高效率?----》缓冲流
需要保证数据的原样性?----打印流
需要写入对象数据类型?----对象流
在IO流中,只要涉及到缓冲区就要使用flush刷新。