黑马程序员技术交流社区

标题: 字符输出流FileWriter [打印本页]

作者: 范玉    时间: 2015-7-29 20:58
标题: 字符输出流FileWriter
字符输出流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();
                                        }
                                }

作者: 狮子王    时间: 2015-7-29 21:57
顶!~        




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