を使用するxyzzy <inputfile
と、シェルが実行xyzzy
され、そのファイルが標準入力に「接続」されるためです。次に、その標準入力を読み取ってデータを取得することを期待しています-引数はコマンドラインから削除されているため(または、引数リストに追加されていない可能性が高いため)、表示されません。
そのため、多くのプログラムは、指定されたファイルを処理し、そうでない場合は標準入力からデータを読み取ります。そして、それはまさにあなたがここでしなければならないことです。
これを行うには、おそらく次のようなものが必要になるでしょう。
import java.io.*;
class Test {
public static void main(String args[]) {
InputStreamReader inp = null;
Boolean isStdIn = false;
try {
if (args.length > 0) {
inp = new InputStreamReader(new FileInputStream(args[0]));
} else {
inp = new InputStreamReader(System.in);
isStdIn = true;
}
// Now process inp.
if (isStdIn)
inp.close();
} catch (Exception e) {
System.exit(1);
}
}
}
ファイル (利用可能な場合) または読み取り用の標準入力ストリームのいずれかを選択します。