依赖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)的更多相关文章

  1. Java执行系统命令工具类(JDK自带功能)

    CommandUtil.java package utils; import java.io.ByteArrayOutputStream; import java.io.IOException; im ...

  2. Java基础-DButils工具类(QueryRunner)详解

    Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...

  3. Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

    Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...

  4. Java多线程并发工具类-信号量Semaphore对象讲解

    Java多线程并发工具类-Semaphore对象讲解 通过前面的学习,我们已经知道了Java多线程并发场景中使用比较多的两个工具类:做加法的CycliBarrier对象以及做减法的CountDownL ...

  5. Java并发编程工具类 CountDownLatch CyclicBarrier Semaphore使用Demo

    Java并发编程工具类 CountDownLatch CyclicBarrier Semaphore使用Demo CountDownLatch countDownLatch这个类使一个线程等待其他线程 ...

  6. HttpTool.java(在java tool util工具类中已存在) 暂保留

    HttpTool.java 该类为java源生态的http 请求工具,不依赖第三方jar包 ,即插即用. package kingtool; import java.io.BufferedReader ...

  7. java文件处理工具类

    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...

  8. java格式处理工具类

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...

  9. Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类

    Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类   =========================== ©Copyright 蕃薯耀 2017年9月25日 http://www ...

随机推荐

  1. vue中this.$router.push() 传参

    1  params 传参 注意⚠️:patams传参 ,路径不能使用path 只能使用name,不然获取不到传的数据 this.$router.push({name: 'dispatch', para ...

  2. app常见测试点

    安装与卸载: ●应用是否可以在IOS不同系统版本或android不同系统版本上安装(有的系统版本过低,应用不能适配) ●软件安装后是否可以正常运行,安装后的文件夹及文件是否可以写到指定的目录里. ●安 ...

  3. httpUrlConnection连接网络的用法(用到了handle传递消息,在主线程中更新UI)

    由于httpclient在Android5.0以后已经过时,所以官方推荐使用httpUrlConnection来连接网络,现将该连接的基本方法展示,如下 注意:记得加入<uses-permiss ...

  4. vuex初探

    WW(是什么.为什么) 什么是vuex? 如果你学过react,那么你就更容易理解vuex,因为vuex相当于react中的redux,它是用于管理数据的工具.我们看一看官网的介绍: Vuex 是一个 ...

  5. 在rails 中返回 zip 文件

    在平日的开发当中我们一般只返回html,json 等等,但是偶尔情况下也会使用到其他文件的返回,比如 pdf ,csv 文件 今天在开发中使用的是将大量的文字返回给用户. ## 知识点 `Tempfi ...

  6. Kudu 常见的几个应用场景

    不多说,直接上干货! Kudu 常见的几个应用场景 实时更新的应用.刚刚到达的数据就马上要被终端用户使用访问到. 时间序列相关的应用,需要同时支持: 根据海量历史数据查询. 必须非常快地返回关于单个实 ...

  7. 数据库的ACID跟事务隔离级别

    摘抄:http://blog.csdn.net/shuaihj/article/details/14163713 ------------------------------------------- ...

  8. 创建weblogic domain

    做成了PDF文档 这里可下载可以看 config.sh 命令目录 weblogic/Oracle/Middleware/wlserver_10.3/common/bin├── commEnv.sh├─ ...

  9. Linux禁ping

    A.临时允许PING操作的命令为:# >/proc/sys/net/ipv4/icmp_echo_ignore_all B.永久允许PING配置方法. /etc/sysctl.conf 中增加一 ...

  10. 【ubuntu】出现device not managed连接不上网络

    ubuntu安装好后显示“device not managed” 1. 编辑/etc/NetworkManager/NetworkManager.conf: sudo gedit /etc/Netwo ...