java运行一个命令行程序后,如何能将命令行里的内容复制到java的某个容器(如JTextField等)中啊?又如何能在这个容器中继续(像在命令行里一样)完成其他命令行的操作啊?
我在网上查了下,有的人说要用到windows的api函数,请问如何实现啊,请具体说下!
还有,除了windows api外,还有没有其他的方法啊?
小弟在此先谢过了!
我在网上查了下,有的人说要用到windows的api函数,请问如何实现啊,请具体说下!
还有,除了windows api外,还有没有其他的方法啊?
小弟在此先谢过了!
InputStream is=pro.getInputStream();
哪里用得上WIN API啊。
2楼正解。把Process的输出重定向到自己可控的InputStream,读取里面的内容,再翻写到Console。再从控制台读屏幕输入,
try {
//Process pro=ce.exec("cmd /k ");
Process pro1=ce.exec("cmd /c start D:\\programfile\\Snort\\bin\\snort.exe -v");
InputStream is=pro1.getInputStream();
OutputStream os=pro1.getOutputStream();
byte[] b=new byte[100000];
int i=is.read(b);
System.out.print(new String(b));
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
这是我的代码,为何没有输出啊
public class DosConsole { /**
* @param args
*/
public static void main(String[] args) {
BufferedReader console = new BufferedReader(new InputStreamReader(
System.in));
try {
String cmd = null;
while ((cmd = console.readLine()) != null) {
if ("".equals(cmd) || "exit".equals(cmd.toLowerCase())) {
break;
}
Process pro = Runtime.getRuntime().exec(cmd);
BufferedReader is = new BufferedReader(new InputStreamReader(
pro.getInputStream()));
String line = null;
while ((line = is.readLine()) != null) {
System.out.print(line+"\r\n");
}
System.out.println("OK");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }}
只要exec正确执行 并且有输出 虽然一次read方法所读的字节数会因文尾或异常而中断 但应该还是能读到一些吧 试试exec("cmd /c dir");
public static void main(String[] args) throws IOException, InterruptedException {
String ls_1;
//其中参数“/c”表示命令执行后关闭Dos立即关闭窗口。
Process process = Runtime.getRuntime().exec("cmd /c dir c:");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ( (ls_1=bufferedReader.readLine()) != null)
System.out.println(ls_1);
process.waitFor();
}
这是一个调用DOS的DIR的命令 输出到控制台
改一下输出目标就可以
lz可以参考一下这里的文章-浅析Java执行外部命令的几个要点(1)
-浅析Java执行外部命令的几个要点(2)
-浅析Java执行外部命令的几个要点(3)
-浅析Java执行外部命令的几个要点(4)
不但能调用WINDOWS的,在linux下还可以调linux的命令,前提是你的操作系统得支持这些命令
我是想java运行命令行程序后,把命令行里显示的数据读出后显示在Swing容器里(最好还能继续执行命令行操作)啊,如何实现啊?
我是想把命令行里的读出后显示在Swing容器里啊,如何实现啊?