Java命令行输出
我使用以下代码在java中执行命令并获得输出:Java命令行输出,java,command-prompt,Java,Command Prompt,我使用以下代码在java中执行命令并获得输出: String line; try { System.out.println(command); Process p = Runtime.getRuntime().exec(command); BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
try {
System.out.println(command);
Process p = Runtime.getRuntime().exec(command);
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
print(line);
}
input.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
然而,显然命令“tree”和“assoc”以及其他命令实际上并不是它们自己的程序,它们可以通过Java运行,而是作为命令提示符的一部分进行编码,因此我无法获得输出。实际上有什么方法可以做到这一点吗?谢谢你我没有一台windows机器来测试这一点,但通常是为了得到你运行的
cmd.exe
作为程序的内置程序的输出,并将命令作为参数传递给它
现在,这有一些限制,因为当命令完成时,可执行文件停止。因此,如果执行cd
命令,它将工作,但它只影响子流程,而不影响您的流程。对于这类事情,如果您希望它们更改流程的状态,则需要使用其他工具
此版本在Mac上工作:
import java.io.*;
public class cmd {
public static void
main(String[] argv){
String line;
String[] cmd = {"bash","-c","ls"};
System.out.println("Hello, world!\n");
try {
Process p = Runtime.getRuntime().exec(cmd);
BufferedReader input =
new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
} catch (Exception e) {
}
return ;
}
}
您使用另一个
线程来读取它。我想我不明白,问题是我无法从“assoc”或类似命令获取输出。假设您参考Windows,请将assoc
的输出重定向到输出文件中,然后读取该文件。发布问题时,请确保提供所有必要的详细信息:命令的内容示例、实际输出、请求的输出、操作系统等。