所以我正在尝试将一个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) {}
}
}
谢谢!
答案 0 :(得分:0)
我想你想要的是一根管子,它起到了一条中间线的作用。两个进程之间没有使用"临时文件"。
所以我建议你阅读关于JAVA中管道的文档。
另见javadoc about PipedInputStream
javadoc about PipedOutputStream
更重要的是,如果您的操作系统支持从终端进行IO重定向,那么就这样做而不使用,正如Andy所说。这将是最简单的。
答案 1 :(得分:0)
只需在第一个中写入System.out
,从第二个中的System.in
读取,并在运行这两个命令时使用管道将第一个输出连接到第二个:
java pip1 | java pip2