【问题标题】:Java: How to configure System.out to have autoflush enabled?Java:如何配置 System.out 以启用自动刷新?
【发布时间】:2020-05-15 10:05:58
【问题描述】:

我像这样使用反射来打印出System.out 对象的属性:

System.out.println("Class: " + System.out.getClass().getName());
for (Field field : ObjectUtils.getAllFields(System.out)) {
    field.setAccessible(true);
    System.out.println("> " + field.getType().getSimpleName() + ' ' + field.getName() + " = " + field.get(System.out));
}

结果如下:

Class: java.io.PrintStream
> boolean autoFlush = false
> boolean trouble = false
> Formatter formatter = null
> BufferedWriter textOut = java.io.BufferedWriter@43c1b556
> OutputStreamWriter charOut = java.io.OutputStreamWriter@587e5365
> boolean closing = false
> OutputStream out = org.apache.tools.ant.util.TeeOutputStream@22fcf7ab

如您所见,autoflush 设置为 false。所以我的问题很简单——如何将System.out 配置为将autoflush 设置为true

【问题讨论】:

标签: java flush printwriter system.out autoflush


【解决方案1】:

将其包装在另一个流中:

PrintStream newOut = new PrintStream(System.out, true);
// And then set it to out (Credit to David Zimmerman in the comments)
System.setOut(newOut);

【讨论】:

【解决方案2】:

【讨论】:

  • 不是 auto-flush 的真正含义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-22
  • 1970-01-01
  • 1970-01-01
  • 2017-04-26
  • 2021-07-30
  • 2015-01-22
  • 2014-11-10
相关资源
最近更新 更多