关于连接两个Java程序

时间:2015-11-15 03:43:40

标签: java pipeline

所以我正在尝试将一个java程序连接到另一个程序的输入,我想知道我这样做是否有效或者是否有更好的方法。我将字符串保存到第一个程序中的文本文件中,然后读取字符串,然后在第二个程序中将其打印出来。有没有办法只使用文本文件作为中间人?

这是我的第一个程序:

import java.util.Scanner;
import java.io.*;

public class pip1{
    public static void main(String[] args){
        String inString = "";
        Scanner sc = new Scanner(System.in);
        inString = sc.next();
        try{
            PrintWriter out = new PrintWriter("word.txt");
            out.println(inString);
            out.close();
        } catch(FileNotFoundException ex){ }
    }
}

这是第二个:

import java.io.*;

public class pip2{
    public static void main(String[] args) {
        String fileName = "word.txt";
        try {
            FileReader fr = new FileReader(fileName);

            BufferedReader br = new BufferedReader(fr);

            String outString = br.readLine();
            br.close();
            fr.close();

            System.out.println(outString);
        } catch (FileNotFoundException ex) {}
          catch (IOException ex) {}
    }
}

谢谢!

2 个答案:

答案 0 :(得分:0)

我想你想要的是一根管子,它起到了一条中间线的作用。两个进程之间没有使用"临时文件"。

所以我建议你阅读关于JAVA中管道的文档。

此处a link of tutorial.

另见javadoc about PipedInputStream

javadoc about PipedOutputStream

更重要的是,如果您的操作系统支持从终端进行IO重定向,那么就这样做而不使用,正如Andy所说。这将是最简单的。

答案 1 :(得分:0)

只需在第一个中写入System.out,从第二个中的System.in读取,并在运行这两个命令时使用管道将第一个输出连接到第二个:

java pip1 | java pip2