cmd怎么调用java程序,用java实现在cmd中执行命令

  cmd怎么调用java程序,用java实现在cmd中执行命令

  写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用

  【相关学习推荐:java基础教程】

  java如何用cmd命令的方法:

  1.使用运行时间中执行(字符串命令)方法执行煤矿管理局命令,如下:

  Process p=Runtime.getRuntime().exec(cmd);此方法会抛出IOException,但是在项目中遇到没有出现异常,命令也没有执行的情况。

  2.此方法可以达到大多的煤矿管理局调用的期望结果,但有些时候回出现命令卡死在p . wait for();上,造成线程阻塞

  公共静态布尔runCMD(字符串命令)引发IOException,InterruptedException {

  final String METHOD _ NAME= run cmd ;

  Process p=Runtime.getRuntime().exec(cmd);

  BufferedReader br=null

  尝试{

  br=新的缓冲读取器(新的InputStreamReader(p . get errorstream()));

  string readLine=br。readLine();

  StringBuilder builder=new StringBuilder();

  while (readLine!=null) {

  readLine=br。readLine();

  建筑商。append(readLine);

  }

  伐木工。debug(METHOD _ NAME # readLine: builder。tostring());

  p。等待();

  int I=p . exit值();

  伐木工。info(METHOD _ NAME # exit value= I );

  if (i==0) {

  返回真实的

  }否则{

  返回错误的

  }

  } catch (IOException e) {

  伐木工。error(METHOD _ NAME # ErrMsg= e . getmessage());

  e。printstacktrace();

  扔e;

  }最后{

  如果(br!=null) {

  br。close();

  }

  }

  }3.使用以下方法不会出现和2一样情况下得阻塞的问题,与2的区别就是获取流不同,将getErrorStream换成getInputStream就好了

  公共静态布尔runCMD(字符串命令)引发IOException,InterruptedException {

  final String METHOD _ NAME= run cmd ;

  //Process p=Runtime.getRuntime().exec( cmd。exe/C cmd);

  Process p=Runtime.getRuntime().exec(cmd);

  BufferedReader br=null

  尝试{

  //br=新缓冲读取器(new InputStreamReader(p . get errorstream()));

  br=新的缓冲读取器(新的InputStreamReader(p . getinputstream()));

  string readLine=br。readLine();

  StringBuilder builder=new StringBuilder();

  while (readLine!=null) {

  readLine=br。readLine();

  建筑商。append(readLine);

  }

  伐木工。debug(METHOD _ NAME # readLine: builder。tostring());

  p。等待();

  int I=p . exit值();

  伐木工。info(METHOD _ NAME # exit value= I );

  if (i==0) {

  返回真实的

  }否则{

  返回错误的

  }

  } catch (IOException e) {

  伐木工。error(METHOD _ NAME # ErrMsg= e . getmessage());

  e。printstacktrace();

  扔e;

  }最后{

  如果(br!=null) {

  br。close();

  }

  }

  } 4.对于3方法有个缺点是执行错误时无法将错误消息打印出来,还有一个方法是先将执行的煤矿管理局命令写入到文件中后再执行,这是如果执行错误日志可以打印,线程也不会卡死。

  a.将执行的命名写入到文件中。FileUtils.java

  公共静态布尔写文件(文件导出文件,最终字符串内容){

  if(导出文件==null 字符串utils。isempty(内容)){

  返回错误的

  }

  如果(!exportFile.exists()) {

  尝试{

  exportFile.getParentFile().mkdirs();

  导出文件。创建新文件();

  } catch (IOException e) {

  e。printstacktrace();

  伐木工。错误(创建本地JSON文件异常: e . getmessage());

  返回错误的

  }

  }

  缓冲编写器缓冲编写器=null

  尝试{

  文件输出流OS=新文件输出流(导出文件);

  文件描述符FD=OS。getfd();

  缓冲写入器=新缓冲写入器(新输出流写入器(OS, UTF-8 ));

  bufferedWriter.write(内容);

  //刷新流中的数据并写入系统缓冲区

  //数据可能会也可能不会写入磁盘。

  缓冲编写器。flush();

  //阻塞,直到系统缓冲区被写入磁盘。

  //此方法返回后,数据保证具有

  //已写入磁盘。

  FD。sync();

  } catch(UnsupportedEncodingException e){

  伐木工。错误( saveDBData #捕获一个UnsupportedEncodingException( e . getmessage()));

  返回错误的

  } catch(找不到文件异常e){

  伐木工。error( saveDBData # catch a FileNotFoundException( e . getmessage())));

  返回错误的

  } catch (IOException e) {

  伐木工。错误( saveDBData #捕获io异常( e . getmessage()));

  返回错误的

  } catch(异常e) {

  伐木工。错误( saveDBData #捕获异常( e . getmessage()));

  返回错误的

  }最后{

  尝试{

  if (bufferedWriter!=null) {

  缓冲编写器。close();

  bufferedWriter=null

  }

  } catch (IOException e) {

  伐木工。错误( writeJsonToFile # catch a exception( e . getmessage())));

  }

  }

  返回真实的

  }b .执行命令

  公共静态布尔exutecmdbatfile(字符串cmd) {

  final String METHOD _ NAME= excuteCMDBatFile # ;

  布尔结果=真;

  流程p;

  File bat File=new File( D:/test/cmd。bat’);

  系统。出去。println(bat文件。getabsolutepath());

  boolean is success=file utils。writefile(bat文件,cmd);

  如果(!发布成功){

  logger.error(METHOD_NAME 将煤矿管理局写入文件失败。);

  返回错误的

  }

  string bat文件路径= \ 迁移常量.CMD _ BAT _ FILE " \

  伐木工。info( cmd path: bat文件路径);

  尝试{

  p=Runtime.getRuntime().exec(bat文件路径);

  InputStream fis=p . get errorstream();//p . getinputstream();

  InputStreamReader ISR=新的InputStreamReader(fis,system。getproperty(文件。编码’));

  BufferedReader br=新缓冲阅读器(ISR);

  字符串行=空

  StringBuilder builder=new StringBuilder();

  while ((line=br.readLine())!=null) {

  生成器.追加(行);

  }

  p。等待();

  int I=p . exit值();

  伐木工。info(METHOD _ NAME exit value= I );

  如果(我!=0) {

  结果=假;

  logger.error(METHOD_NAME 执行煤矿管理局失败,[result= result ,错误消息=生成器。tostring()]);

  System.out.println(方法名称执行煤矿管理局失败,[result= result ,错误消息=生成器。tostring()]);

  }否则{

  //记录器。debug(METHOD _ NAME execute cmd result= result);

  系统。出去。println(METHOD _ NAME result= result);

  }

  } catch(异常e) {

  结果=假;

  e。printstacktrace();

  logger.error(METHOD_NAME 无法执行蝙蝠文件[ErrMsg= e . getmessage()]);

  }

  返回结果;

  }以上就是爪哇岛如何用煤矿管理局命令的详细内容,更多请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: