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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 fanshuai 于 2015-2-21 10:59 编辑

如题。
按字符写入,按字符数组写入,按字节写入,按字节数组写入 这四种情况。
如果这时候要是停电不是也会丢失数据吗?每次都刷新感觉又浪费资源,到底什么时候要用flush刷新。

4 个回复

倒序浏览
fluse是写字符传输才会用到的,因为一个字符相当于两个字节。比如一扇门正好能进一个人,这时两个人一起走,肯定是进不了门的,但是只要在后面踹一脚,那就能进去了,fluse就是相当于踹一脚。
回复 使用道具 举报
万合天宜 发表于 2015-2-20 19:12
fluse是写字符传输才会用到的,因为一个字符相当于两个字节。比如一扇门正好能进一个人,这时两个人一起走 ...

用write按字符写入,按字符数组写入也可以用flush吗?可是看视频里没有用,是怕占用资源吗?
是不是一次写一行才需要接着flush,其他的都不需要。
回复 使用道具 举报
flush()用于刷新缓冲区内容,一般会创建数组,将字节或者字符读入数组,比如
byte[] b=new byte[1024]; out.read(b); 这时候要flush:因为字节被写入到缓存区了,然后得将缓冲区内容冲刷到文件输出流中去,然后将字节写入到文件
回复 使用道具 举报
xyf19881010 来自手机 中级黑马 2015-2-21 00:56:36
报纸
首先明白,为什么要刷新:这是因为带走缓冲区的缘故。缓冲区就是为了减少IO操作次数而在内存划分出来的一块区域,我们write的时候,先写到这个缓冲区,一般是缓冲区满了之后就自动写入目的地,例如硬盘。而当没有满的时候,数据就不会自动到硬盘里去。此时就需要我们手动刷一把,相当于把没有满的缓冲区里面的数据全部倒到硬盘中,保持数据完整性。至于什么时候刷新,按理说只要最后刷一把就可以了,但是编程的时候写一次刷一次,安全系数更好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马