Java 执行系统命令工具类(commons-exec)
依赖jar
<!-- 可以在JVM中可靠地执行外部进程的库。 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-exec</artifactId>
<version>1.3</version>
</dependency>
CommandUtils.java
package utils; import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream; import org.apache.commons.exec.CommandLine;
import org.apache.commons.exec.DefaultExecutor;
import org.apache.commons.exec.ExecuteException;
import org.apache.commons.exec.ExecuteWatchdog;
import org.apache.commons.exec.PumpStreamHandler; /**
* 执行系统命令工具类
*
* @author Storm
*
*/
public class CommandUtils { private static final String DEFAULT_CHARSET = "GBK"; /**
* 执行指定命令
*
* @param command 命令
* @return 命令执行完成返回结果
* @throws IOException 失败时抛出异常,由调用者捕获处理
*/
public static String exeCommand(String command) throws IOException {
try (
ByteArrayOutputStream out = new ByteArrayOutputStream();
) {
int exitCode = exeCommand(command, out);
if (exitCode == 0) {
System.out.println("命令运行成功!");
} else {
System.out.println("命令运行失败!");
}
return out.toString(DEFAULT_CHARSET);
}
} /**
* 执行指定命令,输出结果到指定输出流中
*
* @param command 命令
* @param out 执行结果输出流
* @return 执行结果状态码:执行成功返回0
* @throws ExecuteException 失败时抛出异常,由调用者捕获处理
* @throws IOException 失败时抛出异常,由调用者捕获处理
*/
public static int exeCommand(String command, OutputStream out) throws ExecuteException, IOException {
CommandLine commandLine = CommandLine.parse(command);
PumpStreamHandler pumpStreamHandler = null;
if (null == out) {
pumpStreamHandler = new PumpStreamHandler();
} else {
pumpStreamHandler = new PumpStreamHandler(out);
} // 设置超时时间为10秒
ExecuteWatchdog watchdog = new ExecuteWatchdog(10000); DefaultExecutor executor = new DefaultExecutor();
executor.setStreamHandler(pumpStreamHandler);
executor.setWatchdog(watchdog); return executor.execute(commandLine);
} public static void main(String[] args) {
try {
String result = exeCommand("ipconfig /all");
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
}
} }
.
Java 执行系统命令工具类(commons-exec)的更多相关文章
- Java执行系统命令工具类(JDK自带功能)
CommandUtil.java package utils; import java.io.ByteArrayOutputStream; import java.io.IOException; im ...
- Java基础-DButils工具类(QueryRunner)详解
Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...
- Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类
Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...
- Java多线程并发工具类-信号量Semaphore对象讲解
Java多线程并发工具类-Semaphore对象讲解 通过前面的学习,我们已经知道了Java多线程并发场景中使用比较多的两个工具类:做加法的CycliBarrier对象以及做减法的CountDownL ...
- Java并发编程工具类 CountDownLatch CyclicBarrier Semaphore使用Demo
Java并发编程工具类 CountDownLatch CyclicBarrier Semaphore使用Demo CountDownLatch countDownLatch这个类使一个线程等待其他线程 ...
- HttpTool.java(在java tool util工具类中已存在) 暂保留
HttpTool.java 该类为java源生态的http 请求工具,不依赖第三方jar包 ,即插即用. package kingtool; import java.io.BufferedReader ...
- java文件处理工具类
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...
- java格式处理工具类
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...
- Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类
Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类 =========================== ©Copyright 蕃薯耀 2017年9月25日 http://www ...
随机推荐
- vue中组件传值方式汇总
在应用复杂时,推荐使用vue官网推荐的vuex,以下讨论简单SPA中的组件间传值. 一.路由传值 路由对象如下图所示: 在跳转页面的时候,在js代码中的操作如下,在标签中使用<router-li ...
- spark on yarn,cluster模式时,执行spark-submit命令后命令行日志和YARN AM日志
[root@linux-node1 bin]# ./spark-submit \> --class com.kou.List2Hive \> --master yarn \> --d ...
- c++中 函数的默认参数 学习
默认参数指的是当函数调用中省略了实参时 自动使用一个默认的值. 对于带参数列表的函数,必须从右向左添加默认值 (就是说她的右边肯定是先有默认的值) fun(int ,1,2,3) 不能 fu ...
- CTeX里面CTRL-Space和中文输入法的冲突问题解决
我使用的是windows xp,相信下面的方法也能应用到win7等windows系统上. 我希望在CTex套件的WinEdt 6.0里使用模板自动插入内容时,想快速从上到下遍历” * “并修改. 通过 ...
- (转)企业级NFS网络文件共享服务
企业级NFS网络文件共享服务 原文:http://www.cnblogs.com/chensiqiqi/archive/2017/03/10/6530859.html --本教学笔记是本人学习和工作生 ...
- jade 入门
推荐网站: jade官网 html在线转换为jade 参考文章1 参考文章2 node的模板常用的有两个,一个是ejs,另外一个就是jade,相对来说,ejs更容易理解,像原生的html,很多 ...
- NodeJS 开发应用
NodeJS 开发应用 使用的 Node 版本: V8.11.4 开发工具: VSCode 1.27.1 系统: Deepin 15.7 Desktop x64 项目结构 项目结构 Project i ...
- 记一次失败的Linux安装
这次把整个电脑都装了Ubuntu,向Linux这条路越走越远了,也感谢社会对Linux的支持越来越完善了,才让我下定这个决心,再次表示感谢 之前都是装双系统或者在vm下安装的Linux,现在再装一次, ...
- 设计模式之装饰器模式io的小入门(十一)
装饰器模式详解地址 原文总结 定义: 在不必改变原类文件和使用继承的情况下, 动态的扩展一个对象的功能. 通过创建一个包装对象, 也就是装饰来包裹真实的对象 部分详解提示 看了一些文档, 装饰器模式非 ...
- HTML知识点梳理