Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将数据从Nodejs程序传输到Java程序?_Java_Node.js_Stream_Pipe - Fatal编程技术网

如何将数据从Nodejs程序传输到Java程序?

如何将数据从Nodejs程序传输到Java程序?,java,node.js,stream,pipe,Java,Node.js,Stream,Pipe,Java类内部包含以下内容: Process process = Runtime.getRuntime().exec("node /home/master/code/nodejs/searchLi.js"); process.waitFor(); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); StringBuilder builder =

Java类内部包含以下内容:

Process process = Runtime.getRuntime().exec("node /home/master/code/nodejs/searchLi.js");
process.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder builder = new StringBuilder();
String line = null;
while ( (line = reader.readLine()) != null) {
    builder.append(line);
    builder.append(System.getProperty("line.separator"));
}
String result = builder.toString();
System.out.println(result);
const Stream = require('stream');
const readableStream = new Stream.Readable();
readableStream.push('ping!');
readableStream.push('pong!');
console.log("success");
return "success";
nodejs searchLi中包含以下内容:

Process process = Runtime.getRuntime().exec("node /home/master/code/nodejs/searchLi.js");
process.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder builder = new StringBuilder();
String line = null;
while ( (line = reader.readLine()) != null) {
    builder.append(line);
    builder.append(System.getProperty("line.separator"));
}
String result = builder.toString();
System.out.println(result);
const Stream = require('stream');
const readableStream = new Stream.Readable();
readableStream.push('ping!');
readableStream.push('pong!');
console.log("success");
return "success";

正如您所看到的,我尝试实现流,但失败了。如何将一个字符串从nodejs文件传输到Java文件?

您可以设置一个http服务器,尽管对于这样小的(字符串)我建议使用
fs
npm库创建一个文件并从中读取Java程序


我对java没有经验,但我假设有一个文件读取库。

您的java代码很好,但是您的node.js代码没有正确使用streams。您可以停止使用自己的流,而改用
process.stdout.write
,或者将流修复为指向那里,如下所示:

const Stream=require('Stream');
const readableStream=new Stream.Readable();
readableStream.push('ping!');
readableStream.push('pong!');
readableStream.push(null);
readableStream.pipe(process.stdout);
控制台日志(“成功”);
返回“成功”;

谢谢您的回答!我只是想知道是否有可能像处理两个相同语言的文件一样直接使用返回值?在您看来,流是一个可行的选择吗?生成一个HTTP服务器只是为了在父进程和子进程之间进行通信,这是我听过的最复杂的解决方案之一。@JosephSible,我不擅长这类东西,我并没有建议将其作为解决方案。@propre_poli streams绝对是您应该使用的,另一个答案为您提供了一个很好的解决方案。我查看了流,它似乎使用了我的文件解决方案的流,但优化了它。这正是我要找的!非常感谢。