0

日食には2つのプロジェクトがあります。

プロジェクト A は常に (現在は STDOUT に) 出力をストリーミングしています (ストリーミングされる新しい値はそれぞれ改行で区切られています)

プロジェクトBIはこれを取り入れて、それを使って何かをしたいなど、

これを行う唯一の方法は、ファイルに書き込むことです。途方もない量のデータ (少なくとも私のリソースの場合) があり、そのほとんどが破棄されてしまうため、これは避けたいと思います。

アドバイスをいただければ幸いです。

4

1 に答える 1

1

これにアプローチするにはいくつかの方法があります。

  1. TCP ソケットを使用する - 達成するのはそれほど難しくなく、リモートで作業することができます (各プログラムを別のコンピューターで実行します)。
  2. プログラム A でセグメント化されたファイルを作成し、プログラム B でそれらを使用する - ニュアンスは少しトリッキーですが、必要に応じて全体的に堅牢な手法です
  3. OS パイプを使用する - 現在の状況を考えると最も簡単な方法

オプション 3 について説明します。

ProgramA.java:

for (int i=0; i<10; i++) {
    System.out.println(i);
}

ProgramB.java:

java.io.BufferedReader br = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
String input;
while((input=br.readLine())!=null){
    System.out.println("----" + input);
}

その後、コマンドラインでこれを行うことができます:

java -cp <program_A_classpath> ProgramA | java -cp <program_B_classpath> ProgramB

出力は次のようになります。

----0
----1
----2
----3
----4
----5
----6
----7
----8
----9
于 2013-10-13T07:25:30.827 に答える