命令行java、文件参数和管道输入
我正在做一个程序,我希望它能像这样运行命令行java、文件参数和管道输入,java,command-line,arguments,pipe,Java,Command Line,Arguments,Pipe,我正在做一个程序,我希望它能像这样运行 my_program -o Words 其中“Words”是一个文件,但我也希望它能够使用管道输入而不是来自文件,所以 grep test Words | my_program -o 如何收集和存储管道中的数据?如何检查数据是否已通过管道输入?若要读取管道数据,应在程序中从stdin读取 grep测试单词| my_程序-o 在您的示例中,|将grep测试单词的stdout导入myu程序的stdin中。请参阅。可以使用标准工具(如扫描仪,缓冲读取器等)从
my_program -o Words
其中“Words”是一个文件,但我也希望它能够使用管道输入而不是来自文件,所以
grep test Words | my_program -o
如何收集和存储管道中的数据?如何检查数据是否已通过管道输入?若要读取管道数据,应在程序中从stdin读取
grep测试单词| my_程序-o
在您的示例中,
|
将grep测试单词的stdout
导入myu程序的stdin中。请参阅。可以使用标准工具(如扫描仪
,缓冲读取器
等)从系统中读取管道数据
与检查管道输入相比,可能更容易检查相反的条件:如果文件已指定为参数,如果未指定,则从Java中的标准输入读取:
System.in
“是”标准输入李>
系统输出
“是”标准输出李>
System.err
“是”标准
通过使用管道,可以重定向stdin,因此foo | bar
会将foo
输出到stdout的内容重定向到bar
的stdin中
System.in
是一个InputStream
。如果您希望能够从stdin以及文件中读取数据,一种可能性是:
InputStream in = System.in;
if (hasOptionToReadFromFile)
in = Files.newInputStream(Paths.get(fileName));
“编程作业”如家庭作业?有价值的信息,但记住标签是禁止的@泡沫桩