简体   繁体   English

如何在Java程序中为节点执行控制台命令

[英]how to execute console commands in a java program for node

I need to access the console on the node through java how to make this ? 我需要通过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();  
    }  
}
}

I expect that node.exe requires text, not binary as you are using it. 我希望node.exe需要文本,而不是您正在使用的二进制文件。

This means that using PrintWriter to write lines of text and BufferedReader to read lines of text would make more sense. 这意味着使用PrintWriter编写文本行和使用BufferedReader读取文本行将更有意义。

Java has a built in Javascript interpreter. Java具有内置的Java解释器。 I assume you cannot use that for some reason. 我认为您由于某种原因不能使用它。

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();
        }
    }

}

It continues at me return -1, when I try read your output 当我尝试读取您的输出时,它继续返回我-1

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM