A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© paozhuanyinyu 中级黑马   /  2014-8-11 23:56  /  2032 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

问题见代码注释处
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();
        }
}

9 个回复

倒序浏览
你这个代码复制不了的,应该定义一个字节数组来存储读取的内容,再把字节数组写出去
回复 使用道具 举报
不刷新的话,如果系统突然故障,你刚才写的数据因为没被刷新进目的地,会丢失。刷新可以保证写入的数据一直被保存进目的地,不会因为意外而丢失。
回复 使用道具 举报
不用刷新
回复 使用道具 举报
字节流不用刷新
回复 使用道具 举报
字符流需要刷新,字节流不需要啊
回复 使用道具 举报
本帖最后由 黎志勇 于 2014-8-12 08:57 编辑

甭管是不是字节流,BufferedOutputStream用了缓冲技术,要刷新。其他用到缓冲技术的流,最好都刷新一下。
回复 使用道具 举报
使用到了缓冲就刷新一下吧。
回复 使用道具 举报
郑飞 高级黑马 2014-8-29 15:40:16
9#
谁知道这里writer(byt)到底是怎么个过程 和楼主有同样的疑惑
回复 使用道具 举报
不用刷新 你可以看源代码 我也是找了好久才找到的 源代码中 自动判断缓冲区数组是否装满 满了自动刷新 只有最有一次关闭流就可以
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马