我正在制作一个Swing程序,用于通过G轻松运行C程序,但我坚持实际运行该程序 . 我尝试使用Runtime.getRuntime()或类似的东西,但似乎没有用 . 而且,使用它只运行命令,并且不允许输入 . 显然,因为它将运行一个程序,它需要能够接收命令行输入,所以有没有办法通过打开cmd然后在该程序实例中执行命令来运行命令,允许用户输入东西?
看看ProcessBuilder类,我认为它可以满足您的要求:https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html
如何在cmd中运行命令,并将其打开以允许输入? (JAVA)
首先,您是否正在使用main方法中的参数?
public static void main(String[] args) //<--- arguments will be send to args[x] { }
如果你希望你的程序能够接收参数,你必须处理那些收到的参数,如果没有,即使参数被传入 . 没有任何事情会发生 .
Example:
class MyFullName{ public static void main(String[] args){ if(args.length() != 2) system.out.println("2 arguments needed"); else System.out.println("Your fullname is: " + args[0] + " " args[1]); } }
上面的示例是一个程序,它接收名字和姓氏并将它们组合在一起并打印出来 . 您键入的参数将传递到 args 字符串数组中 .
args
Test run:
javac MyFullName.java java MyFullName adam smith Your fullname is adam smith
如果您使用的是Windows而不想在命令提示符下键入命令,则可以将这些代码放在批处理文件中 . 执行批处理文件将执行那些将启动程序的命令 .
此示例Java程序执行'dir'命令读取dir命令的输出打印结果 .
import java.io.*; public class doscmd { public static void main(String args[]) { try { Process p=Runtime.getRuntime().exec("cmd /c dir"); p.waitFor(); BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream())); String line=reader.readLine(); while(line!=null) { System.out.println(line); line=reader.readLine(); }} catch(IOException e1) {} catch(InterruptedException e2) {} System.out.println("Done"); }}
参考:http://www.javasamples.com/showtutorial.php?tutorialid=8
3 回答
看看ProcessBuilder类,我认为它可以满足您的要求:https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html
首先,您是否正在使用main方法中的参数?
如果你希望你的程序能够接收参数,你必须处理那些收到的参数,如果没有,即使参数被传入 . 没有任何事情会发生 .
Example:
上面的示例是一个程序,它接收名字和姓氏并将它们组合在一起并打印出来 . 您键入的参数将传递到
args
字符串数组中 .Test run:
如果您使用的是Windows而不想在命令提示符下键入命令,则可以将这些代码放在批处理文件中 . 执行批处理文件将执行那些将启动程序的命令 .
此示例Java程序执行'dir'命令读取dir命令的输出打印结果 .
参考:http://www.javasamples.com/showtutorial.php?tutorialid=8