2013-01-14 96 views
1

我工作的一個程序,我想它這樣命令行渣華,文件參數和管道輸入

my_program -o Words 

凡「字」是一個文件的功能,但我也想它與無法從文件管道輸入功能,所以

grep test Words | my_program -o 

如何收集和儲存在數據管道?我怎樣才能檢查數據是否被傳入?

+1

「一個編程任務」,如在作業? – amphibient

+1

寶貴的信息,但請記住[標籤:家庭作業]標籤是禁止的。 @foampile – 11684

回答

1

要讀取管道數據,您應該從程序中的標準輸入讀取數據。

grep test Words | my_program -o

在您的例子|grep test Words標準輸出入my_program標準輸入。請參閱 article on streams, pipes, and redirects

1

數據管道可以從System.in使用標準工具,如ScannerBufferedInputReader等讀取

而不是檢查管道,在輸入時,它可能會更容易檢查相反的情況:如果一個文件已被指定爲參數,並且如果它沒有被,然後從標準輸入

1

讀取在Java:

  • System.in「是」的stdin;
  • System.out「is」stdout;
  • System.err「is」stderr。

通過使用管道,重定向標準輸入,因此foo | bar重定向任何foo輸出到標準輸出爲bar的標準輸入。

System.inInputStream。如果你想有可能從stdin和一個文件中讀取,一種可能性是這樣做的:

InputStream in = System.in; 

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