我目前正在编写一个使用 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 以从文件重定向到标准输出。因为我有几个要写入的日志文件,所以在任何地方都使用 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();
}
OutputStreamWriter
和 PrintWriter
都是 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
或其他什么,只是给你一个想法..
关于java - 如何使用 BufferedWriter 写入标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4405078/