Java 输入重定向:有什么方法可以在读取时实际显示接收到的输入?
Java input redirection: Is there any way to actually display the received input as it is read?
我是 运行 一个 java 程序,使用
java myProgram < input.txt > output.txt
从输入文件中读取我的测试用例,并将结果输出记录在输出文件中。在大多数情况下,它运行良好,没有任何问题。
但是,我看不到用户应该 "typed" 的输入(即从 input.txt 文件中读取的输入)。相反,它只是在我的输出文件中显示为空白 space,如下所示:
Enter command: Command successfully entered!
有没有办法强制显示输入,就像它会显示给真实用户一样? (就像这样,就好像用户输入了 "Potato":)
Enter command: Potato
Command successfully entered!
问题是您不希望在读取时输入,而是在使用时输入。不同之处在于,由于您正在从文件中读取,如果您有缓冲输入,它将一次读取 8 KiB。但是,您一次可能只消耗一行。
您可以通过在代码中尽早覆盖输入来做到这一点。
System.setIn(new InputWrapper(System.in));
但是,您应该尽量确保最少阅读,一次可能不超过一行。
我最终只是使用在我的测试程序的 class 中声明的布尔值来指示调试模式,然后每次都将刚刚读入的内容打印到字符串中:
boolean debugEnabled = true;
然后,在我的代码中:
if (debugEnabled)
System.out.println(inputString);
返回并为每个输入实施这很耗时,但效果很好。
我是 运行 一个 java 程序,使用
java myProgram < input.txt > output.txt
从输入文件中读取我的测试用例,并将结果输出记录在输出文件中。在大多数情况下,它运行良好,没有任何问题。
但是,我看不到用户应该 "typed" 的输入(即从 input.txt 文件中读取的输入)。相反,它只是在我的输出文件中显示为空白 space,如下所示:
Enter command: Command successfully entered!
有没有办法强制显示输入,就像它会显示给真实用户一样? (就像这样,就好像用户输入了 "Potato":)
Enter command: Potato
Command successfully entered!
问题是您不希望在读取时输入,而是在使用时输入。不同之处在于,由于您正在从文件中读取,如果您有缓冲输入,它将一次读取 8 KiB。但是,您一次可能只消耗一行。
您可以通过在代码中尽早覆盖输入来做到这一点。
System.setIn(new InputWrapper(System.in));
但是,您应该尽量确保最少阅读,一次可能不超过一行。
我最终只是使用在我的测试程序的 class 中声明的布尔值来指示调试模式,然后每次都将刚刚读入的内容打印到字符串中:
boolean debugEnabled = true;
然后,在我的代码中:
if (debugEnabled)
System.out.println(inputString);
返回并为每个输入实施这很耗时,但效果很好。