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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 范玉 中级黑马   /  2015-7-29 20:58  /  234 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

字符输出流FileWriter
               
                1)完成一个简单在指定文件中写入数据的操作的步骤
                        A:创建字符输出流FileWriter对象(并且传入一个你要写入的位置)
                                FileWriter fw = new FileWriter("a.txt");
                        B:调用写数据的功能
                                fw.write("hello,io,我来了。祝你元旦快乐。");
                        C:刷新缓冲区
                                fw.flush();
                        D:释放资源(jvm不会自动回收流的资源,除非你手动标记该流已成为垃圾)
                                fw.close();
               
                2)对简单在指定文件中写入数据的操作提出了疑问
                       
                        ①为什么FileWriter没有无参构造方法?
                                因为写数据的时候,一定要明确写道哪里去。

                        ②既然close()也有刷新缓冲区的作用为什么还要flush呢?(flush()和close()的区别?)
                                flush():只刷新缓冲区,流对象还可以继续使用。
                                 close():先刷新缓冲区,在关闭流对象。流对象不可以继续被使用。

                        ③难道每次调用方法的时候,都需要刷新吗?或者说,不用刷,直接等到close()来解决,行不行?
                                两种方法都不可取,因为每写入一个字就调用一次flush的话,如果写入大量文字的时候
                                这时候效率就太低了,但是如果写入大量文字在缓冲区,直接等到close()再刷新的话如果文字太多,
                                不及时刷新缓冲区的话,又怕会内存溢出,所以要设置刷新间隔,比如下面代码是开发中常用的
                                int count = 0;
                                for (int x = 0; x < 1000000; x++) {
                                        fw.write("hello,林青霞" + x);
                                        if (++count % 10000 == 0) {
                                                fw.flush();
                                        }
                                }

1 个回复

正序浏览
顶!~        
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马