我在MATLAB中使用Java ProcessBuilder在后台打开可执行文件。此可执行文件执行一些自动化任务,然后暂停,等待用户键入一些文本并按Enter键。
我可以通过ProcessBuilder向可执行文件发送“enter key”命令,但是我无法发送文本字符串。有人可以帮助我吗?到目前为止,我的代码是在后台启动可执行文件:
% specify the executable to run
run_exe_file = {'my_executable_program.exe'};
% initialize the java ProcessBuilder, run the executable
processBuilder = java.lang.ProcessBuilder(run_exe_file);
myProcess = processBuilder.start();
% initialize the reader. notice the myProcess in myProcess.getInputStream
reader = ...
java.io.BufferedReader(...
java.io.InputStreamReader(...
myProcess.getInputStream() ...
) ...
);
% initialize the writer. notice the myProcess in myProcess.getOutputStream
writer = ...
java.io.BufferedWriter(...
java.io.OutputStreamWriter(...
myProcess.getOutputStream() ...
) ...
);
运行上面的代码后,'my_executable_program.exe'开始在后台成功运行。后台程序运行一些任务后,等待用户输入。例如,如果我想发送一个“输入键”按下程序,我在MATLAB中键入以下内容:
writer.newLine; writer.flush; reader.readLine;
成功发送enter键命令。但是,如果我想向程序发送一些文本,根据我的理解,我应该使用以下代码:
writer.write("Here is some text I'm sending to the program"); writer.flush; reader.readLine;
但是,运行上面的代码不会在我的测试中将文本字符串发送到程序。有人可以帮助我发送文本的正确语法吗?
谢谢