【问题标题】:Redirecting the input from file with multiple Scanner objects for Stdin使用 Stdin 的多个 Scanner 对象重定向来自文件的输入
【发布时间】:2015-12-09 16:51:05
【问题描述】:

我目前正在为我们的一个工具使用一个小型命令行界面。

我想从文件或 bash 脚本文件中提供输入以自动输入。

问题是 CLI 使用多个 Scanner 对象从标准输入读取输入。手动插入输入时本质上没有问题,因为在任何给定时间只使用一个 Scanner 对象,但是当 stdin 重定向时,似乎缓冲区附加到第一个 Scanner 对象,该对象仅用于读取第一个值并且我收到java.util.NoSuchElementException

补充一下,我对这个问题的结论是基于这个: Error while redirecting the input from file

在这种情况下,我可以使用任何 bash 魔法来重定向标准输入吗?或者甚至是 JVM 参数来提供帮助?

【问题讨论】:

标签: java bash stdin io-redirection legacy-code


【解决方案1】:

查看Reddit Answer

此解决方案的主要思想是将延迟输入自动传递到脚本中。当第二个Scanner 对象被创建时,预期的输入应该被推送到标准输入中,从而解决了整个输入只被第一个扫描器捕获的问题。

因此,与其拥有一个包含简单输入值的文本文件,不如让 shell 脚本在每个输入值之间休眠。

#!/bin/sh 回声 3 睡觉 1 回声 4

然后运行最终程序如下:

./delayedEchoScript | java -jar myProgram.jar

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多