パイプ(|)によるデータの受取方法 †Linux(*BSD)などのシェルでコマンドとコマンド間でデータを渡すときにパイプ(|)を使用しデータのやりとりをしますよね。 system.inからデータを取得する †以下のサンプルソースの通り、system.inにデータがあるか(パイプによるデータ受け渡しがあるか)をチェックし class PipeIn { public static void main(String[] args) { try { if (System.in.available() != 0) { InputStreamReader in = new InputStreamReader(System.in, "UTF-8"); BufferedReader b = new BufferedReader(in); String l; int i = 1; while (null != (l = b.readLine())) { System.out.printf("%04d: %s\n", i, l); i++; } } else { System.out.println("No input by the pipe."); } } catch (IOException e) { e.printStackTrace(); } } } 実行例 †以下に本サンプルソースのコンパイルおよび実行結果を記します。
使用したJDKバージョン $ java -version; javac -version openjdk version "9-internal" OpenJDK Runtime Environment (build 9-internal+0-2016-04-14-195526.buildd.src) OpenJDK Server VM (build 9-internal+0-2016-04-14-195526.buildd.src, mixed mode) javac 1.8.0_131 以上、Javaでパイプによる入力(STDIN)を扱うサンプルソースでした。 |