3

我需要写入文件而不是 System.out.println 并同时保存,以便用户可以通过打开文件随时查看进度。

现在我正在使用以下代码

     FileWriter fstream = null;
        File file1 = new File(logFile);
        fstream = new FileWriter(file1);
        out = new BufferedWriter(fstream);
               out.write(msg);
     out.write("\n");

但它不会将内容保存到文件中,除非我说 Out.close();

仅供参考 - 1. 这是 Java EE 应用程序代码。2. 我不想使用 Log4jLogger

有没有更简单的方法来做到这一点?任何指针?

4

3 回答 3

7

您无需致电close()- 只需致电flush()

刷新此输出流并强制写出任何缓冲的输出字节。

于 2012-06-25T22:39:34.680 回答
0

你也可以这样做。

PrintWriter out = new PrintWriter(logFile, "UTF-8");
out.println(msg);
out.flush();

如果您要求在特定时间进行输出,请使用该flush()方法。此外,通过这种方式,您可以为输出文件指定编码。

于 2012-06-25T23:43:15.543 回答
0

简短的回答是OutputStream#flush()。可悲的答案是,实际上在许多 Java EE 部署中很难保证,对于 JVM 和虚拟化云事物,f_sync() 已经失去了它曾经拥有的承诺。

于 2012-06-25T22:54:19.663 回答