我的查询变量中的Java程序生成了一个查询。我想将此发送给SWI-Prolog以获得解决方案。下面显示了我用Java编写的与SWI-Prolog通信的子代码。
Process P= new ProcessBuilder("C:\\Program Files\\swipl\\bin\\swipl-win.exe").start();
BufferedReader processOutput = new BufferedReader(new InputStreamReader(P.getInputStream()));
BufferedWriter processInput = new BufferedWriter(new OutputStreamWriter(P.getOutputStream()));
String commandToSend = Query;
processInput.write(commandToSend);
但是SWI-Prolog窗口打开了,但是我写入ProcessInput的命令没有被发送到SWI-Prolog。 someoe可以告诉我最好的方法吗?我也需要文件中来自SWI-Prolog的查询执行输出。
答案 0 :(得分:0)
将查询保存到外部文本文件并从命令行执行swipl
(设置适当的选项)并将输出重定向到另一个文本文件。然后,读取该输出文件。
示例:
:- query.
swipl -s QUERY.TXT -g halt --quiet > OUTPUT.TXT
此外,我怀疑您应该使用Runtime.getRuntime().exec(...)
和waitFor(...)
的组合来等待swipl生成输出。