这就是我要做的,使用类“ProcessBuilder”将输入、输出流从python读取到java。为此,我编写了一个java示例python脚本
示例.java
String[] args = new String[]{"python","Sample.py"};
ProcessBuilder builder = new ProcessBuilder(args);
builder.redirectErrorStream(true);
try {
p = builder.start();
} catch (IOException e) {
e.printStackTrace();
}
StreamWriter stdInput = new StreamWriter(p.getInputStream());
stdInput.start();
...
private class StreamWriter extends Thread{
...
public void run(){
try {
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
int ch;
synchronized (StreamWriter.class){
while ( (ch = br.read()) != -1){
System.out.print((char)ch);
}
}
}
catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
样品.py
^{pr2}$我在Ubuntu和Windows8上测试了我的代码,结果如下
在Windows8中,我可以打印“第一行”、“第二行”、“输入第一个值”并等待用户输入。这里的问题是,如何使用process.getOutputStream(),因为我曾经写过bufferedWriter.write(“某物”),bufferedWriter.flush(),直到我打电话outputstream.close()在我的代码中(它将关闭进程的输出流,如果没有它,我将无法向脚本提供第二次输入),它不会打印“输入第二个值”来要求用户输入第二个值。在
在Ubuntu中,我甚至从一开始就没有得到任何输出(我希望至少在'enterfirstvalue'之前程序打印出来,但是没有什么正常的),程序一直在等待输入
有什么帮助吗
目前没有回答
相关问题 更多 >
编程相关推荐