命令行java,文件参数和管道输入

时间:2013-01-14 21:17:16

标签: java command-line arguments pipe

我正在制作一个程序,我希望它能像这样运作

my_program -o Words

“Words”是一个文件,但我也希望它能够使用管道输入而不是来自文件,所以

grep test Words | my_program -o

如何收集和存储数据中的管道?如何检查数据是否已通过管道输入?

3 个答案:

答案 0 :(得分:1)

要读取管道数据,您应该从程序中的stdin读取。

grep test Words | my_program -o

在您的示例中,|grep test Words的标准输出管道传递给my_program的标准输入。请参阅 article on streams, pipes, and redirects

答案 1 :(得分:1)

可以使用System.inScanner等标准工具从BufferedInputReader读取数据管道。

不是检查管道输入,而是检查相反的条件可能更容易:如果文件已被指定为参数,如果尚未指定,则从标准输入读取

答案 2 :(得分:1)

在Java中:

  • System.in“是”stdin;
  • System.out“是”stdout;
  • System.err“是”stderr。

通过使用管道,您重定向stdin,因此foo | bar将任何foo输出重定向到stdout到bar的标准输入。

System.inInputStream。如果你想有可能从stdin和文件中读取,有一种可能性就是这样做:

InputStream in = System.in;

if (hasOptionToReadFromFile)
    in = Files.newInputStream(Paths.get(fileName));