文档章节

java执行command(linux/window)

海棠
 海棠
发布于 2014/09/04 19:41
字数 322
阅读 34
收藏 0
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
public class CommandRun {
 private java.lang.Process p;
 private InputStream is;
 private OutputStream os;
 private BufferedWriter bw;
 private BufferedReader br;
// private ProcessBuilder pb;
 private InputStream stdErr;
 /**
  * @date Sep 4, 2014
  * @auther jiaj.zhou@sunyard.com
  * @param args
  */
 public static void main(String[] args) {
  CommandRun cr = new CommandRun();
  String osn = cr.getSystem();
  String line = "";
  BufferedReader bufr = null;
  try {
   bufr = new BufferedReader(new InputStreamReader(System.in));
   while ((line = bufr.readLine()) != null) {
    System.out.println("[osname : " + osn + "][recive command : " + line + "]");
    if ("bye".equals(line)) {
     break;
    }
    String result = "";
    if(osn.equals("windows")){
     /*open cmd*/
     cr.p = Runtime.getRuntime().exec("cmd");
     cr.os = cr.p.getOutputStream();
     cr.is = cr.p.getInputStream();
//     stdErr = p.getErrorStream();
     result = cr.windowRun(line);
    }else if(osn.equals("linux")){
     result = cr.linuxRun(line);
    }
    System.out.println("******return string start******\r\n" + result + "\r\n" + "*******return string end*******");
   }
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   if(bufr != null){
    try {
     bufr.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
 }
 
 /**
  * linuxMethod
  * @date Sep 4, 2014
  * @auther jiaj.zhou@sunyard.com
  * @param line
  * @return
  * @throws Exception
  */
 public String linuxRun(String line) throws Exception{
  String [] commands = { "sh", "-c", " " };
  commands[2] = line;
  p = Runtime.getRuntime().exec(commands);
  p.waitFor();
  return readInfo(p.getInputStream());
 }
 
 /**
  * windowsMethod
  * @date Sep 4, 2014
  * @auther jiaj.zhou@sunyard.com
  * @param line
  * @return
  */
 public String windowRun(String line){
  String result = "";
  try {
   bw = new BufferedWriter(new OutputStreamWriter(os));
   bw.write(line);
   bw.newLine();
   bw.flush();
   bw.close();
   int n = p.waitFor();
   result = readInfo(is);
  } catch (Exception e) {
   e.printStackTrace();
  }
  return result;
 }
 
 /**
  * return info
  * @date Sep 4, 2014
  * @auther jiaj.zhou@sunyard.com
  * @param is
  * @return
  */
 private String readInfo(InputStream is){
  StringBuffer resStr = new StringBuffer("");
  br = new BufferedReader(new InputStreamReader(is));
  String buffer = "";
  try {
   while ((buffer = br.readLine()) != null) {
    resStr.append(buffer + "\n");
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return resStr.toString();
 }
 
 /**
  * os
  * @date Sep 4, 2014
  * @auther jiaj.zhou@sunyard.com
  * @return
  */
 private String getSystem(){
  String osName = "";
  if (System.getProperty("os.name").startsWith("Windows")){
   osName = "windows";
  }else{
   osName = "linux";
  }
  return osName;
 }
}

© 著作权归作者所有

共有 人打赏支持
海棠
粉丝 0
博文 3
码字总数 641
作品 0
杭州
程序员
私信 提问
How to Integrate R With Java Using Rserve

R Tutorial: How to Integrate R With Java Using Rserve http://codophile.com/2015/05/02/how-to-integrate-r-with-java-using-rserve/ IntroductionBuilding Machine Learning based anal......

qwfys
2018/07/26
0
0
请教linux下java调用shell实现自动重启的问题

应用场景是实现java程序的远程升级,java程序运行在linux下,是一个后台一直运行的服务。 大概流程如下: 1.java程序判断接收到升级包,调用linux shell脚本来进行升级 Runtime.getRuntime()...

风之刀
2017/06/06
155
0
linux在线安装JDK(1.8版本)

linux在线安装JDK(1.8版本) 2018年07月03日 15:36:27 唯爱酒神 阅读数:806 标签: linux jdk安装 jdk安装 更多 个人分类: linux 在线下载JDK 命令: wget --no-check-certificate --no-c...

rootliu
02/22
0
0
给Jenkins增加Linux奴隶节点

Add linux slave node in the Jenkins https://mohitgoyal.co/2017/02/14/add-linux-slave-node-in-the-jenkins/ https://www.howtoforge.com/tutorial/ubuntu-jenkins-master-slave/ https:......

圣洁之子
2018/11/16
0
0
java 困扰

理解为什么 JAVA 消耗 CPU 在产品环境profiling 不是一个选择,我们的CPU已经好几次达到了几乎100%,我们的环境是运行部署在 Redhat中的tomcat 5.5,接下来发生了什么? 幸运的是, java 一开...

晨曦之光
2012/02/24
2
0

没有更多内容

加载失败,请刷新页面

加载更多

Hibernate SQLite方言

以下代码有参考过github上国外某位大佬的,在发文的最新稳定版Hibernate上是可用的,有时间再仔细分析一下 import org.hibernate.dialect.Dialect;import org.hibernate.dialect.function.S...

CHONGCHEN
今天
3
0
CentOS 7 MariaDB搭建主从服务器

本文编写环境为CentOS7。确保关闭SELinux,关闭防火墙或者防打开指定端口。具体信息如下 #master[root@promote ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [r...

白豆腐徐长卿
今天
10
0
介绍python中运算符优先级

下面这个表给出Python的运算符优先级,从最低的优先级(最松散地结合)到最高的优先级(最紧密地结合)。这意味着在一个表达式中,Python会首先计算表中较下面的运算符,然后在计算列在表上部...

问题终结者
今天
3
0
Spring Boot 2.x基础教程:快速入门

简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot来让...

程序猿DD
昨天
10
0
SpringSecurity认证流程源码级详解

SpringSecurity认证流程源码级详解 认证流程说明 认证结果如何在多个请求之间共享 获取认证用户信息

chendom
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部