[英]how to execute console commands in a java program for node
我需要通过java访问节点上的控制台,该怎么做?
public class Comando {
public static void main(String[] args) {
String comando = "C:\\Program Files\\nodejs\\node.exe";
try {
Process process = Runtime.getRuntime().exec(comando);
OutputStream stdin = process.getOutputStream ();
InputStream stderr = process.getErrorStream ();
InputStream stdout = process.getInputStream ();
stdin.write("1+2".getBytes());
stdin.flush();
// System.out.print(stdout.read());
stdin.close();
System.out.print(stdout.read());
//BufferedReader reader = new BufferedReader (new InputStreamReader(stdout));
//BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
// writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
我希望node.exe
需要文本,而不是您正在使用的二进制文件。
这意味着使用PrintWriter编写文本行和使用BufferedReader读取文本行将更有意义。
Java具有内置的Java解释器。 我认为您由于某种原因不能使用它。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
public class Comando {
public static void main(String[] args) {
String comando = "C:\\Program Files\\nodejs\\node.exe";
try {
ProcessBuilder builder = new ProcessBuilder(comando);
Process process = builder.start();
OutputStream stdin = process.getOutputStream();
InputStream stderr = process.getErrorStream();
InputStream stdout = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(
stdout));
PrintWriter writer = new PrintWriter(stdin);
writer.write("1+2");
writer.flush();
stdin.close();
System.out.print(reader.read());// return -1
// writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
当我尝试读取您的输出时,它继续返回我-1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.