eclipse管道标准输出到另一个项目

时间:2013-10-13 03:03:31

标签: java eclipse stream pipe

我在eclipse中有两个项目;

项目A不断流式传输(当前为STDOUT)输出(流式传输的每个新值都以换行符分隔)

项目B我想接受这个,并用它做一些事情等,

我发现这样做的唯一方法是写入文件;我宁愿避免这种情况,因为存在大量数据(至少对于我的资源而言),并且大部分数据最终会被抛出。

任何建议表示赞赏,谢谢!

1 个答案:

答案 0 :(得分:1)

有几种方法可以解决这个问题:

  1. 使用TCP套接字 - 并非难以实现,并且使您能够远程工作(在不同的计算机上运行每个程序)。
  2. 通过程序A创建一个分段文件,并将它们与程序B一起使用 - 细微差别有点棘手,但如果它适合您的需求则总体上是一种强大的技术
  3. 使用操作系统管道 - 根据您当前的情况,最简单的方法
  4. 我将演示选项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