System.out.println()
次调用Debug
类,当我的程序出现问题时,我会使用Debug.print()
调用来打开调试信息我绝不希望将Debug.print()
电话发送到文件,它只是我的临时信息。当然,当我将标准重定向到文件时,也会在那里发送调试信息
System.console().writer().println()
一起使用,但当标准输出按照javadocs中的指定重定向时,它会返回NullPointerException
。Debug
课程中,我无法确定在我设置我的时候,某人还没有重定向标准输出控制台变量...... 是否有任何简单的写入java控制台的方法,无论标准是什么?
答案 0 :(得分:3)
您始终可以通过创建引用FileOutputStream
句柄的新out
来写入JVM进程的stdout句柄。如果您希望使用与System.out
相同的功能,只需将其打包到PrintWriter
:
PrintStream oldOut=new PrintStream(new FileOutputStream(FileDescriptor.out));
oldOut.println("I ignore whether System.out has been redirected");
这只绕过了使用System.setOut(…);
在JVM中设置的内容。如果进程本身的标准输出已被重定向,例如在命令行中使用>
,这无济于事。
答案 1 :(得分:2)
使用System.err
,写入“标准错误”而不是“标准输出”。当工具的标准输出可能被重定向时,这是类Unix操作系统和Windows上用于向用户显示信息或错误消息的工具的正常方式。请注意,在Unix和Windows上,用户可以包含重定向选项以将标准错误重定向到文件(可能与标准输出相同或不同)。这比尝试直接写入控制台更好,这不允许用户选择。
答案 2 :(得分:0)
在将System.out
更改为其他内容之前,请保存对其名称为stdout
的引用,并且只要您想使用stdout
写入控制台,就可以使用{{1}}。