流
流是对数据输入输出的抽象。
io流的类型
1)按照传输单位划分,可分为字节流和字符流
字节流:处理单元为1个字节,可以处理任何类型的io,适用于处理二进制的对象。
字符流:处理单位为2个字节的Unicode字符,适用于处理字符,字符数组,字符串。
2)按照流向划分,可分为输入流和输出流
输入流:以文件为例,将数据从其他文件读到本文件。
输出流:以文件为例,将数据从本文件写到其他文件。
io流类型的判断
1)类名带有Reader,Writer的是属于字符流,字节流反之
2)输入输出流可以见名知意
缓冲流与非缓冲流的区别
非缓冲流:是一个字节一个字节的读取
缓冲流:是可以将获取的数据放入缓冲区批量读取,减少与磁盘的交互,提高效率
PrintWriter和BufferedWriter的选择
PrintWriter与BufferedWriter都作为常用的字符输出流,使用哪个比较好?
1)在Socket编程中,尽量用PrintWriter取代BufferedWriter
PrintWriter的优点:
-
PrintWriter的print、println方法可以接受任意类型的参数,而BufferedWriter的write方法只能接受字符、字符数组和字符串;
-
PrintWriter的println方法自动添加换行,BufferedWriter需要显示调用newLine方法;
-
PrintWriter的方法不会抛异常,若关心异常,需要调用checkError方法看是否有异常发生;
-
PrintWriter构造方法可指定参数,实现自动刷新缓存(autoflush)
2)由于PrintWriter吞没了异常,我们在一些需要异常处理,或需要保证程序的稳定性时推荐使用BufferdWriter