java IO中,有专门的缓冲流,但同时操作系统本身也会设置缓冲区来进行输入输出。java的缓冲流是不是多此一举呢。
如果除缓冲流外,其他流没有缓冲功能,那这些流的类为什么还有flush方法,来强制输出呢?在我编的一个程序中,使用文件输出流来向一个文件中写数据,如果不加上close方法就写不进去,这是否说明非缓冲流也有缓冲功能呢,这个缓冲功能是依赖于操作系统的缓冲功能得到的。
如果除缓冲流外,其他流没有缓冲功能,那这些流的类为什么还有flush方法,来强制输出呢?在我编的一个程序中,使用文件输出流来向一个文件中写数据,如果不加上close方法就写不进去,这是否说明非缓冲流也有缓冲功能呢,这个缓冲功能是依赖于操作系统的缓冲功能得到的。
但是主板到磁盘,磁盘到磁头还都有缓冲。
byte[] by = new byte[1024];这样在读取了1024个字节后才往文件里面写数据,如果不到就继续读,flush是刷新缓冲区的,比如读到最后小于1024个字节,调用flush就把剩余的字节全部写进文件