主机命令执行
2015-08-10 14:50
357 查看
JAVA中使用Process p = Runtime.getRuntime().exec("命令内容"),可以执行所在主机的命令,执行结果通过Process对象的两个Stream返回,一个是getInputStream(),一个是getErrorStream()。直接获得这两个输入流,并判断流的内容,很难控制先后关系,并且无法准确判断命令是否执行成功。一个比较好的解决方法是ProcessBuilder把两个输入流合并,这样只需要获取一个执行结果就可以了,示例代码如下:
List<String> commandAndParameters = Arrays.asList(new String[] {"cmd.exe", "/C", "ping", "192.168.7.164"});
File dir = new File("D:\\");
ProcessBuilder builder = new ProcessBuilder();
builder.redirectErrorStream(true); // This is the important part
builder.command(commandAndParameters);
builder.directory(dir);
Process process = builder.start();
InputStream is = process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is, "GBK"));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
List<String> commandAndParameters = Arrays.asList(new String[] {"cmd.exe", "/C", "ping", "192.168.7.164"});
File dir = new File("D:\\");
ProcessBuilder builder = new ProcessBuilder();
builder.redirectErrorStream(true); // This is the important part
builder.command(commandAndParameters);
builder.directory(dir);
Process process = builder.start();
InputStream is = process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is, "GBK"));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
相关文章推荐
- REM
- 九度OJ 题目1437:To Fill or Not to Fill
- [洛谷U871]building
- 写博客的理由
- 更改maven使用的java版本(Mac)
- 本地IP获取
- PHP 两个等号 和 三个等号的区别
- 从输入网址到显示网页的全过程分析
- java线程研究---(5)暂停Thread:yield
- SQL判断某列是否为外键
- ubuntu chmod命令的使用
- linux上安装配置vsftpd
- 我的Android进阶之旅------>Android的ListView数据更新后,如何使最新的条目可以自动滚动到可视范围内?
- Solr 缓存配置
- 如何用Spring将Service注入到Servlet中(注解模式)
- Mac Pro 提高效率 快捷键 程序员
- 逆序数 & 逆序对
- Android自定义圆角矩形
- MVC,MVP 和 MVVM 的图示
- ext3文件系统超级块损坏修复