如何使用BufferedWriter写入标准输出

我目前正在编写一个使用BufferedWriter生成多个日志文件的应用程序。 但是,在调试时,我想写入System.out而不是文件。 我想我可以改变:

log = new BufferedWriter(new FileWriter(tokenizerLog)); 

至:

 BufferedWriter log = new BufferedWriter(new OutputStreamWriter(System.out)); log.write("Log output\n"); 

而不是:

 System.out.println("log output") 

新的OutputStreamWriter选项尚未运行。 如何仅更改BufferedWriter构造函数中的Object以从文件重定向到Standard out。 因为我有几个日志文件,我将写入,在任何地方使用System.out并且将输出更改为文件实际上不是一个选项。

你的方法确实有效,你只是忘记刷新输出:

 try { BufferedWriter log = new BufferedWriter(new OutputStreamWriter(System.out)); log.write("This will be printed on stdout!\n"); log.flush(); } catch (Exception e) { e.printStackTrace(); } 

OutputStreamWriterPrintWriter都是Writer实例,因此您可以执行以下操作:

 BufferedWriter log; Writer openForFile(String fileName) { if (fileName != null) return new PrintWriter(fileName); else return new OutputStreamWriter(System.out); } log = new BufferedWriter(openForFile(null)); //stdout log = new BufferedWriter(openForFile("mylog.log")); // using a file 

或者其他什么,它只是给你一个想法..

由于您提到这是用于日志记录,您可能希望查看使用log4j之类的记录器库。 它允许您通过仅更改配置文件来更改日志目标(日志文件或控制台)。