ProcessBuilder优点

ProcessBuilder(XXX).start()和Runtime.exec(XXX)功能相同,主要优点在使用过程中感受有:

  • 前者是jdk1.5后的新方式
  • 配置环境变量时更优雅
  • 对当前目录的控制也更合理
  • 错误流重定向特别方便
  • 进程控制更简洁

ProcessTool.java

package test;import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Map;/*** * @author King* @see* @version createTM:2017年11月23日 下午3:41:38*/
public class ProcessTool {public static void main(String[] args) throws IOException {execWindowCmd();}
public static void execWindowCmd() throws IOException {ProcessBuilder pb = new ProcessBuilder();// 命令Map<String, String> env = pb.environment();// 独立环境变量System.out.println(env);// 打印环境变量env.put("MY_NAME", "KING");// 添加环境变量key-valuepb.redirectErrorStream(true);// 重定向错误输出流到正常输出流try {pb.directory(new File("d://test1"));// 设置目录test1pb.command("cmd", "/c", "dir");// 执行命令
            Process process1;process1 = pb.start();// 启动进程
            BufferedReader br1;br1 = new BufferedReader(new InputStreamReader(process1.getInputStream(), "gbk"));String line1 = null;while ((line1 = br1.readLine()) != null) {System.out.println(line1);}pb.directory(new File("d://test2"));// 设置目录test2pb.command("cmd", "/c", "dir", ">>", "test1.log");// 执行命令,把结果输出到test1.logProcess process2 = pb.start();// 启动进程BufferedReader br2 = new BufferedReader(new InputStreamReader(process2.getInputStream(), "gbk"));String line2 = null;while ((line2 = br2.readLine()) != null) {//因为结果输出到了文件,所以本处无信息返回
                System.out.println(line2);}} catch (IOException e) {e.printStackTrace();throw e;}}
}

Java Runtime.exec()的使用

深入研究java.lang.ProcessBuilder类

转载于:https://www.cnblogs.com/whatlonelytear/p/7885270.html

Process和ProcessBuilder入门【原】相关推荐

  1. 零基础入门原画必知的技巧

    原画设计是当前热门职业之一,有很多小白在初期学习原画设计会感到很困惑,不知道从何下手, 在学习初期,掌握好这5个通用的小技巧,一定能让你把握住原画的脉络.但是要创作更为精彩的作品,一定要不断练习观察, ...

  2. 基础入门原画,需要学习什么

    关于原画,你了解多少?现在很多在学习原画的朋友们,都是因为自己喜欢而学习的原画,还有想以后从事原画这方面的工作的,但是当我们的原画学习出来之后是干嘛的?原画有那些分类?可以从事哪方面的工作?有些人不是 ...

  3. vba vbscript.regexp加载dll错误_[原]排错实战——拯救加载调试符号失败的IDA

    本文之前发表的时候有些问题,作为强迫症患者的我又重新编辑后再次发表.如果您已经看过,请忽略.望见谅. 缘起 最近想借助IDA逆向一个函数.在windows下,调试器(比如vs, windbg)可以通过 ...

  4. [原]调试实战——程序CPU占用率飙升,你知道如何快速定位吗?

    前言 如果我们自己的程序的CPU Usage(CPU占用率)飙升,并且居高不下,很有可能陷入了死循环.你知道怎么快速定位并解决吗?今天跟大家分享几种定位方法,希望对你有所帮助. 如何判断是否有死循环? ...

  5. [原]排错实战——拯救加载调试符号失败的IDA

    本文之前发表的时候有些问题,作为强迫症患者的我又重新编辑后再次发表.如果您已经看过,请忽略.望见谅. 缘起 最近想借助IDA逆向一个函数.在windows下,调试器(比如vs, windbg)可以通过 ...

  6. process 类 java_编写可执行jar——java的Process类的使用(二)

    你知道怎么在控制台使用ping吗?那你知道怎么在java中使用ping吗? 1.批处理文件 批处理文件大家一定不陌生.接触最多的应该就是tomcat中的start.bat或者start.sh了.bat ...

  7. mysql怎么显示创表的语句_141张图带你 MySQL 入门

    SQL 基础使用 MySQL 是一种关系型数据库,说到关系,那么就离不开表与表之间的关系,而最能体现这种关系的其实就是我们接下来需要介绍的主角 SQL,SQL 的全称是 Structure Query ...

  8. process设置超时_概述并设置Process Center单集群拓扑

    process设置超时 这个由三部分组成的系列指南将指导您使用IBM Business Process Manager(BPM)高级版V8.5建立具有常用拓扑的业务流程管理环境. 本系列文章首先快速概 ...

  9. Java Process:另一个程序正在使用此文件,进程无法访问

    最近处理奇怪的问题时,犯了个低级错误,浪费了不少时间,甚至都看了 jdk 底层的 c 代码. 下面这段测试代码是在 Windows 环境运行的(Mac和linux换成 /bin/sh,-c 后没有问题 ...

最新文章

  1. LeetCode刷题-1
  2. 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。
  3. Neo4j: 迁移MySQL的数据到Neo4j
  4. 四川大学计算机学院 期末考试安排,四川大学《计算机组成原理》2018期末考试B卷.doc...
  5. spark入门_入门必读 | Spark 论文导读
  6. 第二十九期:程序员们该如何破局!
  7. 云小课 | 一分钟了解AppCube中的应用
  8. 汇编语言常见错误(转载)
  9. 蒙哥马利java算法_算法详解 - 蒙哥马利算法的概念与原理
  10. tensorflow之视频质量诊断
  11. 管理感悟:遇到问题,使用矩阵测试法
  12. 进程间通讯:实现基于多进程的文件拷贝
  13. 什么是Wiegand协议?什么是韦根26? 什么是韦根34?
  14. TrueType字体结构
  15. HTML巩固练习之字体样式
  16. 苹果计算机怎样恢复桌面,mac桌面整理_使Mac桌面恢复整洁的四种技巧
  17. 安装监控的地方没有WiFi,没有无线网络,如何实现远程监控?
  18. 涂涂乐的详细实现之二--UI布局和效果
  19. 用相关法辨识系统的脉冲响应 matlab,利用相关分析法辨识脉冲响应
  20. 手把手教你制作智能桌宠(小可爱哦!)

热门文章

  1. 如何批量转.jpg/.bmp图片
  2. 基于深度学习的病理_组织病理学的深度学习(第二部分)
  3. 聚类树状图_聚集聚类和树状图-解释
  4. Rebuild Instance 操作详解 - 每天5分钟玩转 OpenStack(37)
  5. VHDL其他顺序语句
  6. 低级键盘钩子 DLL
  7. python有大括号吗_只有我一个人觉得Python取消了大括号而显得结构更加混乱了吗?...
  8. 主管护士需要考计算机和英语吗,2020主管护师改为机考,一定要注意这些问题!...
  9. 电脑下面的任务栏怎么取消隐藏_电脑工具栏怎么调到下面
  10. mysql 数据库还原 不齐_请教mysql数据库还原问题。