一、字节流
名称 | 输入流 | 输出流 |
---|---|---|
超类(基类) | InputStream | OutputStream |
输入缓冲字节流 | BufferedInputStream | BufferedOutputStream |
文件字节流 | FileInputStream | FileOutputStream |
二、字符流
名称 | 输入流 | 输出流 |
---|---|---|
超类(基类) | Reader | Writer |
输入缓冲字符流 | BufferedReader | BufferedWriter |
文件字符流 | FileReader | FileWriter |
三、转换流
字符的输出需要通过字符流来操作,但是本质最后还是通过字节流输出到计算机上进行存储的
InputStreamReader 是字节流到字符流的桥梁
读入数据:程序 << 字符数据 << 字符流 << InputStreamWriter << 字节流 <<文件
OutputStreamWriter 是字符流到字节流的桥梁。
写出数据:程序 >> 字符数据 >> 字符流 >> OutputStreamWriter >> 字节流 >>文件
三、内存流
ByteArrayInputStream 构造方法需要接受一个字节数组源
ByteArrayIOutputStream 因为是内部操作 所以不需要写入目的地
四、对象流
ObjectInputStream
ObjectOutputStream
读出和写入的顺序完全一致
五、打印流
PrintStream 字节打印流
System.out就是PrintStream的一个实例
PrintWriter 字符打印流
六、流的选择
1、确定源和目的
源:选择输入流 Reader InputStream
目的:选择输出流 Writer OutputStream
2、操作数据类型是否为纯文本
是:字符流
否:字节流
3、缓冲流的效率远远快于文件流