java - Java:如何配置 System.out 以启用自动刷新?
问题描述
我像这样使用反射来打印出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
?
解决方案
将其包装在另一个流中:
PrintStream newOut = new PrintStream(System.out, true);
// And then set it to out (Credit to David Zimmerman in the comments)
System.setOut(newOut);
推荐阅读
- python - 如何使用文件中的数据在网页中提交字符串
- python - 如何使用 django 中间件在 django rest 框架中捕获异常?
- c# - 字典拳击
- php - 如果子数组不同,如何使用php在表mysql中插入数组2d
- android - 尝试更新我的应用的发布 apk 时发生包冲突?
- python-3.x - 使用 python 请求登录不适用于 pythonanywhere.com
- javascript - JavaScript 计算器代码不起作用,不确定问题出在哪里
- webgl - 在 webgl 中阻止这些透明度重叠的有效方法是什么?
- python - 一次将 pandas 数据帧随机分组以进行 x 折交叉验证
- python - 如何将列表的每两个元素合并到元组列表中?