字节流:
FileInputStream
FileOutputStream
BufferedInputStream //缓冲区
BufferedOutputStream //缓冲区
字符流:
InputStreamReader //桥梁
OutputStreamWriter //桥梁
FileReader
FileWriter
BufferedReader //缓冲区
BufferedWriter //缓冲区
IO流规律的总结:
一.要操作的数据是数据源还是数据目的.
源:InputStream Reader
目的:OutoutStream Writer
先明确需求明确要读还是要写.
二.要操作的设备上的数据是字节还是文本
源:
字节:InputStream
文本:Reader
目的:
字节:OutputStream
文本:Writer
已经明确到了具体的体系上
三.明确数据所在的具体设备
源设备:
硬盘:文件File开头
内存:数组,字符串.
键盘:System.in
网络:Socket目的设备:
硬盘:文件File开头
内存:数组,字符串.
网络:Socket
屏幕:System.out
完全可以明确具体要使用哪个流对象
四.是否需要额外的功能
转换流 InputStreamReader , OutputStreamWriter
高效缓冲区 BufferedXXX
有多个源(字节流)吗?序列流 SequenceInputStream
对象需要序列化?ObjectInputStream,ObjectOutputStream
需要保证数据输出的表现形式吗?打印流 PrintStream PrintWriter
需要操作基本类型数据保证字节原样性吗? DataOutputStream ,DataInputStreamc
随机读写文件 RandomAccessFile