介绍
这篇文章主要讲解了Java如何执行cmd命令,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
一般Java在执行cmd命令时,通常是使用Runtime.getRuntime.exec(命令)来执行的,这个方法有两种细节要注意:
1。一般执行方法,代码如下,这种方法有时执行exe时会卡在那里。
//一般的执行方法,有时执行exe会卡在那支撑要执行的命令 公共静态无效执行(字符串支撑)抛出IOException InterruptedException { 运行时的运行时=Runtime.getRuntime ();//获取运行时实例//执行命令 尝试{ String[]命令={“cmd",“/c",支撑}; 过程过程=runtime.exec(命令);//标准输入流(必须写在等待之前) 字符串inStr=consumeInputStream (process.getInputStream ());//标准错误流(必须写在等待之前) 字符串errStr=consumeInputStream (process.getErrorStream ()); 新ProcessClearStream (process.getInputStream (),“INFO") .start (); 新ProcessClearStream (process.getErrorStream (),“ERROR") .start (); int proc=process.waitFor (); InputStream errorStream=process.getErrorStream ();//若有错误信息则输出 如果(proc==0) { System.out.println(“执行成功“); 其他}{ System.out.println(“执行失败“;+ errStr); } }捕捉(IOException | InterruptedException e) { e.printStackTrace (); } }/* * *消费inputstream,并返回 */公共静态字符串consumeInputStream (InputStream)抛出IOException { BufferedReader br=new BufferedReader(新InputStreamReader(是,“GBK")); 字符串年代; StringBuilder某人=new StringBuilder (); 而((s=br.readLine ()) !=null) { System.out.println(年代); sb.append(年代); } 返回sb.toString (); }
2。第二种方法是先生成一个缓存文件,用来缓存执行过程中输出的信息,这样在执行命令的时候不会卡。代码如下:
//这个方法比第一个好,执行时不会卡支撑要执行的命令 公共静态孔隙aaa(字符串斯塔姆){ BufferedReader br=零; 尝试{ 文件文件=新文件(“D: \ \ daemonTmp"); 文件临时=新文件(“D: \ \ daemonTmp \ \ temp.tmp");//新建一个用来存储结果的缓存文件 如果(! file.exists ()) { file.mkdirs (); } 如果(! tmpFile.exists ()) { tmpFile.createNewFile (); } ProcessBuilder pb=new ProcessBuilder () .command (“cmd.exe",“/c",斯塔姆).inheritIO (); pb.redirectErrorStream(真正);//这里是把控制台中的红字变成了黑字,用通常的方法其实获取不到,控制台的结果是pb.start()方法内部输出的。 pb.redirectOutput(临时);//把执行结果输出。 .waitFor pb.start()();//等待语句执行完成,否则可能会读不到结果。 InputStream=新FileInputStream(临时); br=new BufferedReader(新InputStreamReader ()); 字符串行=零; 在((=br.readLine行())!=null) { System.out.println(线); } br.close (); br=零; tmpFile.delete();//卸磨杀驴。 System.out.println(“执行完成“); }捕捉(异常e) { e.printStackTrace (); 最后}{ 如果(br !=null) { 尝试{ br.close (); }捕捉(IOException e) { e.printStackTrace (); } } } }
看完上述内容,是不是对Java如何执行cmd命令有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。