gpt4 book ai didi

java - 如何使用 bash 将输入通过管道传输到 Java 程序

转载 作者:IT老高 更新时间:2023-10-28 20:54:09 25 4
gpt4 key购买 nike

我的 Java 程序正在监听标准输入:

InputStreamReader isReader = new InputStreamReader(System.in);
BufferedReader bufReader = new BufferedReader(isReader);
while(true){
try {
String inputStr = null;
if((inputStr=bufReader.readLine()) != null) {
...
}
else {
System.out.println("inputStr is null");
}
}
catch (Exception e) {
...
}
}

现在,我想通过 bash 将输入通过管道传输到该程序。我尝试了以下方法:

echo "hi" | java -classpath ../src test.TestProgram

但它只是打印 inputStr is null 无限次。我做错了什么?

编辑 1:更新问题以包含更多代码/上下文。


编辑 2:

看起来我遇到了与此 OP 相同的问题:Command Line Pipe Input in Java

如何修复程序以便我可以通过管道输入进行测试,但正常运行程序将允许用户在标准输入上输入输入?

最佳答案

你有 while(true),所以你会得到无限循环。

在循环中的某处添加 break 是修复它的一种方法。但这不是一种好的风格,因为读者必须在循环中寻找它是否以及何时退出。

最好让你的 while 语句清楚地显示退出条件是什么:

String inputStr = "";
while(inputStr != null) {
inputStr=bufReader.readLine();
if(inputStr != null) {
...
} else {
System.out.println("inputStr is null");
}
}

关于java - 如何使用 bash 将输入通过管道传输到 Java 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5724646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com