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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。