Java输入重定向:有没有办法在读取时实际显示收到的输入?

时间:2015-10-05 19:30:42

标签: java redirect input output command-prompt

我正在使用

运行java程序

java myProgram < input.txt > output.txt

从输入文件中读取我的测试用例,并将结果输出记录在输出文件中。在大多数情况下,它没有问题,效果很好。

但是,我无法看到用户所谓的“输入”输入(即从input.txt文件中读取的输入)。相反,它只是在我的输出文件中显示为一个空白区域,如下所示:

Enter command: Command successfully entered!

有没有办法强制输入显示,因为它会显示给真实用户? (就像这样,好像用户输入“Potato”:) :( / p>)

Enter command: Potato Command successfully entered!

2 个答案:

答案 0 :(得分:1)

问题在于您不希望输入因为它被读取而是被消耗。不同之处在于,由于您正在读取文件,因此如果您有缓冲输入,它将一次读取8 KiB。但是,您一次只能使用一行。

您可以通过在代码中尽早覆盖输入来完成此操作。

System.setIn(new InputWrapper(System.in));

但是,您应该尝试确保读取最小值,一次可能不超过一行。

答案 1 :(得分:0)

我最后只使用在我的测试程序类中声明的布尔值来发出调试模式的信号,然后每次只打印刚刚读入的字符串:

boolean debugEnabled = true;

然后,在我的代码中:

if (debugEnabled)
    System.out.println(inputString);

回顾并实现每个输入都很耗时,但效果很好。