我有一个要求写入文件而不是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
有没有更简单的方法呢?有什么指针吗?
答案 0 :(得分:7)
您无需致电close()
- 只需致电flush()
。
刷新此输出流并强制执行任何缓冲的输出字节 写出来。
答案 1 :(得分:0)
简短回答是OutputStream#flush()
。令人遗憾的答案是,实际上在许多Java EE部署中难以保证,使用JVM和虚拟化云计算的东西,其中f_sync()失去了曾经拥有的承诺。
答案 2 :(得分:0)
你也可以这样做。
PrintWriter out = new PrintWriter(logFile, "UTF-8");
out.println(msg);
out.flush();
如果您要求在特定时间输出,请使用flush()
方法。此外,通过这种方式,您可以为输出文件指定编码。