在Java运行时遇到问题
帮助我我是Java新手,目前正在做一个学校项目,需要我使用runtime来使用netsh查找WLAN ssid和mac地址。但是,控制台一直给我这个(Microsoft Windows[Version 10.0.17134.165](c)2018 Microsoft Corporation。保留所有权利。)我如何让它显示netsh命令输出在Java运行时遇到问题,java,Java,帮助我我是Java新手,目前正在做一个学校项目,需要我使用runtime来使用netsh查找WLAN ssid和mac地址。但是,控制台一直给我这个(Microsoft Windows[Version 10.0.17134.165](c)2018 Microsoft Corporation。保留所有权利。)我如何让它显示netsh命令输出 public static void main(String args[]) { } public void getWLANbssidInfo() {
public static void main(String args[]) {
}
public void getWLANbssidInfo() {
String netsh = "netsh wlan show networks mode = bssid";
try {
Process p1;
p1 = Runtime.getRuntime().exec("cmd /c " + netsh);
p1.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p1.getInputStream()));
String line = reader.readLine();
while(line!=null){
System.out.println(line);
line = reader.readLine();
}
} catch (IOException ex) {
System.out.println("There was an IO exception.");
} catch (InterruptedException ex) {
System.out.println("The command was interrupted.");
}
}
}您必须使用接受
字符串[]
的exec()重载来指定命令和命令参数,例如:
p1 = Runtime.getRuntime().exec(new String[]{"cmd", "/c", "netsh"});
请注意,如果可执行文件包含在运行命令的环境路径或工作目录(您可以设置)中,则也可以在不使用cmd命令的情况下运行netsh
命令:
p1 = Runtime.getRuntime().exec("netsh");
必须将参数作为单独的字传递给exec()
这里有一个方法:
p1 = Runtime.getRuntime().exec(("cmd /c " + netsh).split("\\s+"));
如果代码是一致缩进的,那么它会更容易阅读。由于某种原因,在运行它时,控制台会终止它。你知道为什么吗?