Java编程思想:进程控制
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test {
public static void main(String[] args) {
OSExecuteDemo.test();
}
}
/*
程序运行过程中将可能产生两种错误:
1.普通的导致异常的错误
2.进程自身的执行的过程中产生的错误
*/
class OSExecuteException extends RuntimeException {
public OSExecuteException(String why) {
super(why);
}
}
/*
要想运行一个程序,需要向OSExecute.Command()传递一个command字符串,它与
在控制台上运行该程序所键入的命令相同。这个命令被传递给
java.lang.ProcessBuilder构造器(它要求这个命令作为一个String对象序列被
传递),然后所产生的ProcessBuilder对象被启动。
*/
class OSExecute {
public static void command(String command) {
boolean err = false;
try{
Process process = new ProcessBuilder(command.split(" ")).start();
//输出程序运行的结果
BufferedReader results = new BufferedReader(
new InputStreamReader(process.getInputStream()));
String str;
while ((str = results.readLine()) != null) {
System.out.println(str);
//System.out.println(new String(str.getBytes("GBK"),"utf-8"));
}
//输出程序运行中产生的错误
BufferedReader errors = new BufferedReader(
new InputStreamReader(process.getErrorStream()));
while ((str = errors.readLine()) != null) {
System.out.println(str);
err=true;
}
} catch (Exception e) {
if(!command.startsWith("CMD /C")){
command("CMD /C " +command);
}else {
throw new RuntimeException();
}
}
if(err){
throw new OSExecuteException("Errors executeing "+command);
}
}
}
class OSExecuteDemo {
public static void test() {
// OSExecute.command("javap OSExecuteDemo");
OSExecute.command("java");
}
}
Java编程思想:进程控制的更多相关文章
- Java编程思想之四控制执行流程
程序必须再执行过程中控制它的世界,并做出选择.在Java中,你要使用执行控制语句来做出选择. 4.1true和false 所有条件语句都利用条件表达式的真或假来决定执行路径. Java不允许使用数字作 ...
- 《Java编程思想》读书笔记
前言 这个月一直没更新,就是一直在读这本<Java编程思想>,这本书可以在Java业界被传神的一本书,无论谁谈起这本书都说好,不管这个人是否真的读过这本书,都说啊,这本书很好.然后再看这边 ...
- JAVA编程思想读书笔记(五)--多线程
接上篇JAVA编程思想读书笔记(四)--对象的克隆 No1: daemon Thread(守护线程) 参考http://blog.csdn.net/pony_maggie/article/detail ...
- 24.JAVA编程思想——违例差错控制
24.JAVA编程思想--违例差错控制 Java 的基本原理就是"形式错误的代码不会执行". 与C++类似,捕获错误最理想的是在编译期间,最好在试图执行程序曾经.然而.并不是全部错 ...
- 《Java编程思想》读书笔记(三)
前言:三年之前就买了<Java编程思想>这本书,但是到现在为止都还没有好好看过这本书,这次希望能够坚持通读完整本书并整理好自己的读书笔记,上一篇文章是记录的第十一章到第十六章的内容,这一次 ...
- 《Java编程思想》读书笔记(五)
前言:本文是<Java编程思想>读书笔记系列的最后一章,本章的内容很多,需要细读慢慢去理解,文中的示例最好在自己电脑上多运行几次,相关示例完整代码放在码云上了,码云地址:https://g ...
- #Java编程思想笔记(一)——static
Java编程思想笔记(一)--static 看<Java编程思想>已经有一段时间了,一直以来都把笔记做在印象笔记上,今天开始写博客来记录. 第一篇笔记来写static关键字. static ...
- Java编程思想重点笔记(Java开发必看)
Java编程思想重点笔记(Java开发必看) Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而 ...
- Java编程思想——初始化与清理
PS:最近一直忙于项目开发..所以一直没有写博客..趁着空闲期间来一发.. 学习内容: 1.初始化 2.清理 1.初始化 虽然自己的Java基础还是比较良好的..但是在解读编程思想的时候还是发现了 ...
- java编程思想
Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而且在大型项目开发中也是常用的知识,既有简单的概念理 ...
随机推荐
- 使用Notepad++远程编辑Ubuntu上的源码
简单搭建了在Windows上远程编辑Ubuntu Server 14.04上面源代码的环境,记录一下,给需要的人. Notepad++安装NppFTP 从插件菜单打开PluginManager,选中N ...
- Java底层知识学习:Bytecode and JMM
最近在跟着耗子哥的程序员练级指南学习Java底层知识,结合<深入理解Java虚拟机>这本书在看,写笔记,看资料,成长中…… 目前看完了第二章JMM和各内存区OOM的情况 一篇图文并茂介绍字 ...
- android adb socket 通信
今天遇到一个问题:pc客户端和android的App通信,心跳通道(心跳包27个字节,是一个业务空包)在部分pc上总是会超时(5秒超时),nagle算法也给禁用了,pc端时按按量发送心跳的,怀疑来怀疑 ...
- C#调用Microsoft.DirectX.DirectSound.dll时出错
1.修改工程的编译选项.我的开发运行环境是Windows 10 x64系统.需要修改一下工程的编译选项,把AnyCPU改成x86的. 未能加载文件或程序集“Microsoft.DirectX.Dire ...
- 微信后台.net网站接入
微信公众号开发需要一个网站接入,根据官网教程,微信服务器会向网站发送四个数据echoString,signature ,timestamp ,nonce. 其中signature是经过timestam ...
- 淘宝开源Key/Value结构数据存储系统Tair技术剖析
摘要: Tair的功能 Tair是一个Key/Value结构数据的解决方案,它默认支持基于内存和文件的两种存储方式,分别和我们通常所说的缓存和持久化存储对应. Tair除了普通Key/Value系统提 ...
- Linux 下配置 phpredis 的过程和遇到的问题
其实对于 Linux 系统和 LNMP 环境并不是很熟,如果有错误请指正. 一.关于 PHP PHP 的编译参考了此文:http://blog.aboutc.net/linux/65/compile- ...
- Spring Cloud微服务简介
概述 Spring Cloud给开发者提供一套按照一定套路快速开发分布式工具.它为微服务架构中涉及**配置管理,服务治理,断路器,智能路由,微代理,控制总线,全局锁,分布式会话和集群状态等操作提供了一 ...
- 常用URL分享,实用地址
常用地址 文库文档免费下载地址1:http://www.hiwenku.com/ 文库文档免费下载下载2:http://www.20009.net/wk.html google地图拾取器:http:/ ...
- python 之 面向对象基础(定义类、创建对象,名称空间)
第七章面向对象 1.面向过程编程 核心是"过程"二字,过程指的是解决问题的步骤,即先干什么再干什么 基于该思想编写程序就好比在编写一条流水线,是一种机械式的思维方式 优点:复杂的问 ...