使用命令行使用Java进行管道输入
我可以通过键入“javareadinput使用命令行使用Java进行管道输入,java,input,piping,Java,Input,Piping,我可以通过键入“javareadinput
java ReadInput hello
时,您还没有(尚未)向系统提供任何输入。在中,程序执行会阻塞,直到有东西可读取为止。您可能注意到字符串“hello”
被传递到args
参数中,传递给main()
方法
如果您正在使用调试器(我强烈建议),请在main()
的第一行放置一个断点。您会注意到,当您以java ReadInput hello
运行程序时,args[0]
是“hello”
如果不使用调试器,则可以使用System.out.println()
(这是初学者经常调试代码的方式)。将这一行代码添加为main()
的第一行:
程序命令行上给出的参数不会进入系统。在中,它们进入args
数组。您可以使用类似于echo hello | java ReadInput
的方法来运行程序,也可以修改程序以查看其args
数组并将其视为输入。(如果您使用后一个选项,您可能希望返回到从系统中读取。在中,如果args
中没有任何内容)以上两个答案部分正确,但部分误导
使用以下语法
if (args.length > 0) System.out.println(args[0]);
在本例中,您将传入两个命令行参数。这些属性将通过args
数组提供:
java ReadInput "Input number one" "Input number two"
使用您提供的代码,当readLine()调用的结果返回null
时,程序将结束。我相信您可以在提示下按enter键发送一个空行,然后结束程序。如果没有,您可能必须修复程序以检查空字符串(input.readLine().equals(“”)
希望这有帮助。使用终止标准输入
public static void main(String[] args) throws IOException {
System.out.println(args.length); //3
System.out.println(args[0]); //"ReadInput"
System.out.println(args[1]); //"Input number one"
System.out.println(args[2]); //"Input number two"
}
或者自己设置一个特殊的EOF符号。
?我明白你所说的“hello”实际上是args[0],但是如果我想测试我的代码而不必指定要读取的文件怎么办?@mephisto,请参阅我回答中使用echo
将输入导入程序的示例。在*nix上,你可以使用Ctrl-D(终止stdin管道的EOF代码)终止输入。@fd:谢谢,我不知道。
java ReadInput "Input number one" "Input number two"
public static void main(String[] args) throws IOException {
System.out.println(args.length); //3
System.out.println(args[0]); //"ReadInput"
System.out.println(args[1]); //"Input number one"
System.out.println(args[2]); //"Input number two"
}
Ctrl-D : Linux/Unix
Ctrl-Z (or F6) and "Enter" : Windows.