【问题标题】:Command line java, file argument and piped input命令行 java、文件参数和管道输入
【发布时间】:2013-01-14 21:17:15
【问题描述】:
我正在开发一个程序,我希望它像这样运行
my_program -o Words
“Words”是一个文件,但我也希望它能够使用管道输入而不是来自文件,所以
grep test Words | my_program -o
如何收集和存储通过管道传输的数据?如何检查数据是否已通过管道输入?
【问题讨论】:
标签:
java
command-line
arguments
pipe
【解决方案2】:
可以使用Scanner、BufferedInputReader 等标准工具从System.in 读取管道数据。
与检查管道输入相比,检查相反的条件可能更容易:如果文件已被指定为参数,如果没有,则从标准输入读取
【解决方案3】:
在 Java 中:
-
System.in“是”标准输入;
-
System.out“是”标准输出;
-
System.err“是”标准错误。
通过使用管道,您重定向标准输入,因此foo | bar 将任何foo 输出到标准输出重定向到bar 的标准输入。
System.in 是一个InputStream。如果您希望能够从标准输入和文件中读取,一种可能性是这样做:
InputStream in = System.in;
if (hasOptionToReadFromFile)
in = Files.newInputStream(Paths.get(fileName));