首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用BufferedWriter写入标准输出

如何使用BufferedWriter写入标准输出
EN

Stack Overflow用户
提问于 2010-12-10 10:15:23
回答 2查看 55K关注 0票数 30

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

代码语言:javascript
复制
log = new BufferedWriter(new FileWriter(tokenizerLog));

至:

代码语言:javascript
复制
BufferedWriter log = new BufferedWriter(new OutputStreamWriter(System.out));
log.write("Log output\n");

与此相对的是:

代码语言:javascript
复制
System.out.println("log output")

不过,新的OutputStreamWriter选项一直不起作用。如何仅将BufferedWriter构造函数中的对象从文件重定向到标准输出。因为我有几个要写入的日志文件,所以在任何地方使用System.out并将输出更改为文件并不是一个真正的选择。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-10 10:21:24

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

代码语言:javascript
复制
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实例,因此您只需执行以下操作:

代码语言:javascript
复制
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

或者别的什么,它只是给你一个想法..

票数 49
EN

Stack Overflow用户

发布于 2010-12-10 12:07:12

既然您提到这是用于日志记录的,那么您可能需要考虑使用像log4j这样的记录器库。它允许您通过仅在配置文件中进行更改来更改日志目标(日志文件或控制台)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4405078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档