黑马程序员技术交流社区

标题: BufferedOutstream需要刷新吗 [打印本页]

作者: paozhuanyinyu    时间: 2014-8-11 23:56
标题: BufferedOutstream需要刷新吗
问题见代码注释处
public static void copy_1() throws IOException{
                BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream("2.mp3"));
                BufferedInputStream bufis = new BufferedInputStream(new FileInputStream("1.mp3"));
                int byt = 0;               
                while((byt = bufis.read())!= -1){
                        bufos.write(byt);
                        //这里需要刷新一下吗
                }
                bufos.close();
                bufis.close();
        }
}


作者: 乐此不疲    时间: 2014-8-12 00:39
你这个代码复制不了的,应该定义一个字节数组来存储读取的内容,再把字节数组写出去
作者: 嘿~~    时间: 2014-8-12 07:46
不刷新的话,如果系统突然故障,你刚才写的数据因为没被刷新进目的地,会丢失。刷新可以保证写入的数据一直被保存进目的地,不会因为意外而丢失。

作者: 迦南    时间: 2014-8-12 07:55
不用刷新
作者: More    时间: 2014-8-12 07:56
字节流不用刷新
作者: 申航航    时间: 2014-8-12 08:34
字符流需要刷新,字节流不需要啊
作者: 黎志勇    时间: 2014-8-12 08:56
本帖最后由 黎志勇 于 2014-8-12 08:57 编辑

甭管是不是字节流,BufferedOutputStream用了缓冲技术,要刷新。其他用到缓冲技术的流,最好都刷新一下。
作者: ZhangYL    时间: 2014-8-12 09:00
使用到了缓冲就刷新一下吧。
作者: 郑飞    时间: 2014-8-29 15:40
谁知道这里writer(byt)到底是怎么个过程 和楼主有同样的疑惑
作者: 郑飞    时间: 2014-8-29 15:51
不用刷新 你可以看源代码 我也是找了好久才找到的 源代码中 自动判断缓冲区数组是否装满 满了自动刷新 只有最有一次关闭流就可以




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2