【问题标题】:eclipse pipe stdout to another projecteclipse管道标准输出到另一个项目
【发布时间】:2013-10-20 21:47:55
【问题描述】:

我在eclipse中有两个项目;

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

我想参与项目 B,并用它做一些事情等,

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

感谢任何建议,谢谢!

【问题讨论】:

  • 它们需要是单独的项目吗?或者它们可以是单独的线程(在同一个项目中)?如果它们可以是单独的线程(在同一个项目中),那么使用BlockingQueue 可能会让您受益匪浅。
  • 嗯...这绝对是我可以考虑的。我现在肯定会调查这个;谢谢!
  • 经过考虑,有必要有两个单独的项目。任何建议表示赞赏
  • 您在eclipse中编码的事实与这个问题无关,我认为您应该从问题中删除eclipse。

标签: java eclipse stream pipe


【解决方案1】:

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

  1. 使用 TCP 套接字 - 实现起来并不难,并且让您能够远程工作(在不同的计算机上运行每个程序)。
  2. 通过程序 A 创建分段文件并与程序 B 一起使用 - 细微差别有点棘手,但总体而言,如果它适合您的需要,这是一种强大的技术
  3. 使用操作系统管道 - 考虑到您当前的情况,最简单的方法

我将演示选项 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-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多