java - 如何使用 BufferedWriter 写入标准输出

标签 java

我目前正在编写一个使用 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();
}

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

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

关于java - 如何使用 BufferedWriter 写入标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4405078/

相关文章:

java - Jackson 中不区分大小写的 JsonNode

java - 将电子邮件从本地文件系统恢复到 ews api 中的 Exchange 帐户

java - 动态图形编程(动画)

java - 黑莓 "error file is not a valid java code file"

java - Hibernate(最佳)最常见的结构

java - JSON 解析器错误

java - Spring Boot,Java Config - 在 DispatcherServlet 中找不到带有 URI [/...] 的 HTTP 请求的映射,名称为 'dispatcherServlet'

java - Maven 使用 AnnotationProcessor 构建,解析 src/main/java 中的文件并生成源代码到 generated-test-sources/test-annotations

java - 在 Windows 上查找 JRE

java - 如果我手动构建并部署到 Tomcat,但在 IntelliJ 下无法运行 Web 应用程序?