Java执行exe,并在标准DIN标准输出上进行多次写入/读取

Java执行exe,并在标准DIN标准输出上进行多次写入/读取,java,jakarta-ee,process,stdout,stdin,Java,Jakarta Ee,Process,Stdout,Stdin,我有一个exe程序,它在标准输入上接收输入,在标准输出上返回。此应用程序需要时间启动。所以我不想每次有请求时都启动一个新流程 目前我使用 Process cmd = Runtime.getRuntime().exec(prg + " " + arg); 我这样写: PrintWriter pWriter = new PrintWriter(cmd.getOutputStream()); pWriter.println("input"); pWriter.flush(); 为了能够阅读,我必须

我有一个exe程序,它在标准输入上接收输入,在标准输出上返回。此应用程序需要时间启动。所以我不想每次有请求时都启动一个新流程

目前我使用

Process cmd = Runtime.getRuntime().exec(prg + " " + arg);
我这样写:

PrintWriter pWriter = new PrintWriter(cmd.getOutputStream());
pWriter.println("input");
pWriter.flush();
为了能够阅读,我必须关闭我的pWriter

pWriter.close();
之后我可以读取输出

我的问题是我无法再次打开pWriter。如果我不关闭,它将无法阅读

有什么办法解决我的问题吗


祝你度过愉快的一天

关闭writer的唯一原因是因为这是流程的实现方式。您对此无能为力。请您详细解释一下好吗?您的流程从
stdin
读取数据,直到数据流结束。如果不关闭Java端的编写器,就无法向进程发出流结束的信号。@MarkoTopolnik但这并不意味着他想再次打开流,他想发送额外的数据?这意味着该进程确实能够处理更多数据?@Ingo,确切地说,我的程序能够接收更多数据。