【问题标题】:Unable to redirect output of "java" command to text file无法将“java”命令的输出重定向到文本文件
【发布时间】:2017-03-08 19:17:08
【问题描述】:

我正在我的 cmd 提示符中尝试以下操作:

java>temp.txt

temp.txt 正在创建,其中没有任何内容。 “java”命令输出显示在控制台本身而不重定向到 temp.txt

但如果我执行以下操作:

目录> temp.txt

dir 命令的输出被重定向到临时文件。

为什么“java”命令的输出没有被重定向到文本文件??

【问题讨论】:

    标签: java redirect output


    【解决方案1】:

    > 用于将standard output(标准输出)发送到给定位置。但是使用java 命令打印的输出将出现在standard error (stderr) 输出中。

    要重定向标准错误,您可以使用以下语法。这会将standard outputs 重定向到stdout.txtstandard errorsstderr.txt

    java > stdout.txt 2> stderr.txt
    

    或者,您可以使用以下命令将standard outputstandard error 发送到同一个文件(无需两次提及文件名)。

    java > output.txt 2>&1
    

    2> 表示重定向标准错误,&1 表示重定向到标准输出的位置,即output.txt。因此,此命令会将 stdout 重定向到 output.txt 并将 stderr 重定向到 stdout 被重定向的位置(即 output.txt 本身)。

    您也可以忽略stderr,将其发送至/dev/null(仅限Linux)

    java > out.txt 2> /dev/null
    

    【讨论】:

    • 如果:java 2>&1
    【解决方案2】:

    因为当你不带参数运行java 时,输出会重定向到stderr 而不是stdout。所以你应该这样做:

    java 2>temp.txt
    

    2 告诉命令将stderr 重定向到文件temp.txt

    更多详情请关注http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html

    【讨论】:

    • 谢谢!那行得通。但是你怎么知道“java”命令将输出重定向到标准错误。
    • 我不知道,但是我做了一个测试,将stdout和stderr重定向到一个文件,并找到了答案
    猜你喜欢
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 2022-01-24
    • 2018-06-07
    • 1970-01-01
    • 2017-04-24
    • 2013-11-15
    相关资源
    最近更新 更多