我在我的cmd提示符中尝试以下内容:
java的> TEMP.TXT
temp.txt正在创建,其中没有内容。 “java”命令输出显示在控制台本身,而不会重定向到temp.txt
但如果我做以下事情:
dir> temp.txt
dir命令的输出被重定向到临时文件。
为什么“java”命令的输出没有被重定向到文本文件?
>
用于将standard output
(stdout)发送到给定位置。但用java
命令打印的输出正在输入standard error
(stderr)。
要重定向stderr,可以使用以下语法。这将standard outputs
重定向到stdout.txt
和standard errors
到stderr.txt
java > stdout.txt 2> stderr.txt
或者,您可以使用以下命令将standard output
和standard error
发送到同一文件(不提及文件名两次)。
java > output.txt 2>&1
2>
意味着重定向stderr,&1
意味着stdout重定向的地方是output.txt
。因此,此命令将stdout重定向到output.txt,并将stderr重定向到重定向stdout的位置(即output.txt iteself)。
因为当你运行没有参数的java
时,输出被重定向到stderr
而不是stdout
。所以你应该这样做:
java 2>temp.txt
2
告诉命令将stderr
重定向到文件temp.txt