日期:2014-05-20  浏览次数:20683 次

关于字节流和字符流的一点小疑问
这几天看了java基础的视频,学到了字节流和字符流。其中学到字节流FileOutputStream和字符流FileWriter。
关于这两个流有点疑问就是,首先字节流和字符流的差别是字节流在操作时本身不会用到缓冲区,是文件本身直接操作,而字符流在操作的时候用到了缓冲区,是通过缓冲区操作文件的。但是,我在写代码的时候发现,FileWriter有fulsh()方法,这是正常的,但是,FileOutputStream也有flush()方法!!!这是为什么呢?求解。。。它不用到缓冲区为什么有清除缓冲区的方法???
------解决方案--------------------
从OutputStream类继承来的,它的flush方法不执行任何操作
------解决方案--------------------
OutputStream只是制定了输出流的基本操作方法,至于是否使用缓冲区他没有硬性要求,你可以做也可以不做.
如FileOutputStream不用缓冲,
而BufferedOutputStream使用缓冲
------解决方案--------------------
抛开操作系统是否存在缓冲
Stream系列的类很好的展示了java中接口编程的概念
所有Stream都有一套固定统一的方法签名,所以你所有用到的流都可以使用到flush方法,这保证了代码的一致性
而对于实现stream接口的实现类来说,是否需要实现接口方法,就可以由自身来决定,实现更灵活