java 执行命令、调用bat文件、调用外部程序的两种方法
2016-06-30 16:09
1331 查看
/**
* commons-exec.jar
* 根据路径执行文件
* @param path
* @return
* hb
*/
public static String exec(String path){
/[b]****************java直接调用runtime****************************[/b]/
public void runbat(String batName) {
try {
Process ps = Runtime.getRuntime().exec(batName);
InputStream in = ps.getInputStream();
int c;
while ((c = in.read()) != -1) {
System.out.print(c);// 如果你不需要看输出,这行可以注销掉
}
in.close();
ps.waitFor();
}
* commons-exec.jar
* 根据路径执行文件
* @param path
* @return
* hb
*/
public static String exec(String path){
if(StringUtil.isEmpty(path)){ return null; } try { //创建一个命令行 CommandLine cmdLine = CommandLine.parse(path); //参数一 cmdLine.addArgument("pararm_1"); //参数二 cmdLine.addArgument("pararm_2"); //执行流 DefaultExecutor executor = new DefaultExecutor(); //定义一组预期退出值 //executor.setExitValue(1); executor.setExitValues(null); //监管机构-监管进程执行时间 --单位为毫秒 ExecuteWatchdog watchdog = new ExecuteWatchdog(10); executor.setWatchdog(watchdog); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ByteArrayOutputStream errorStream = new ByteArrayOutputStream(); PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream,errorStream); executor.setStreamHandler(streamHandler); int ex = executor.execute(cmdLine); //拿到执行程序中输出内容 String out = outputStream.toString("gbk"); //拿到执行程序中执行异常内容 String error = errorStream.toString("gbk"); Log.info(CommonsExecUtil.class, "Method[exec]执行命令行文件名称:{},执行输出:{},执行异常信息:{},执行结果:{}", path,out,error,ex); } catch (IOException e) { e.printStackTrace(); } return null; } public static void main(String[] args) { exec("D:/svn/1.bat"); }
/[b]****************java直接调用runtime****************************[/b]/
public void runbat(String batName) {
try {
Process ps = Runtime.getRuntime().exec(batName);
InputStream in = ps.getInputStream();
int c;
while ((c = in.read()) != -1) {
System.out.print(c);// 如果你不需要看输出,这行可以注销掉
}
in.close();
ps.waitFor();
} catch (IOException ioe) { ioe.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("child thread done"); }
}
相关文章推荐
- DataTables+Struts+Ajax技术的文件下载实现
- JAVA自学之每日一题(三)
- Struts2框架学习(三) 数据处理
- JAVA 内存管理总结
- Struts2框架学习(二) Action
- Java集合详解系列----Java集合继承体系详解
- javaweb 写mysql数据库中文乱码
- Spring Security 和 Angular JS(1)
- Struts2框架学习(一)
- Spring 配置中的 default-lazy-init="false"
- Java迭代器
- RxJava(10-操作符原理&自定义操作符)
- RxJava(10-操作符原理&自定义操作符)
- SpringMVC学习系列(8) 之 国际化
- Spring框架 教程
- Struts2 继承ActionSupport的用处
- java字符串截取相关方法
- Java_数组
- weblogic部署java.lang.ExceptionInInitializerError问题
- SpringMVC学习系列(7) 之 格式化显示