在无限循环中使用BufferedWriter

时间:2014-06-18 13:12:50

标签: java loops filewriter bufferedwriter

在无限循环的每次迭代期间,我是否可以使用BufferedWriter(或任何编写器类)将新行输出到文本文件,直到程序停止?据我所知,必须调用BufferedWriter.close()命令才能将文本保存到文件中,但如果编写器在循环内关闭,程序将抛出异​​常 - 显然,如果编写器设置为关闭在循环之外,语句无法访问。在此先感谢您的帮助。

以下是相关代码:

             int count = 0;
             BufferedWriter out = new BufferedWriter(new FileWriter("myTextFile.txt"));
             while (true) 
             {

                if(count == 0){
                    out.write(myString);
                    out.newLine();
                    System.out.println(myString);
                } else {
                    out.append(myString);
                    out.newLine();
                    System.out.println(myString);

                }
                System.out.println("count = " + count);
                count++;
                out.flush();
                out.close();                   
             }

2 个答案:

答案 0 :(得分:1)

如果您只是想确保所有数据都写入文件, flush 就会执行此操作。关闭主要是为了释放资源,特别是如果你明确地调用flush

flush - 刷新流。

关闭 - 关闭流,先冲洗它。关闭流后,进一步的write()或flush()调用将导致抛出IOException。关闭之前关闭的流无效。

更多信息:http://docs.oracle.com/javase/8/docs/api/java/io/BufferedWriter.html

答案 1 :(得分:1)

您应该使用Flush方法并在finalize()方法中提取close

使用Flush可以让您在应用写入时在文本文件中查看结果。

当您停止申请时,GC将调用finalize方法并关闭流。