展开全部

以下方法支持Linux和windows两个系统的命令行调用。还用到了apache的lang工具包32313133353236313431303231363533e78988e69d8331333361306363commons-lang3-3.1.jar来判断操作系统类型、也用到了和log4j-1.2.16.jar来打印日志。至于rm -rf 是否能成功删除文件,可以手动去调用命令行试试。private String callCmd(String cmd) throws InterruptedException, UnHandledOSException, ExecuteException {

if(SystemUtils.IS_OS_LINUX){

try {

// 使用Runtime来执行command,生成Process对象

Process process = Runtime.getRuntime().exec(

new String[] { "/bin/sh", "-c", cmd });

int exitCode = process.waitFor();

// 取得命令结果的输出流

InputStream is = process.getInputStream();

// 用一个读输出流类去读

InputStreamReader isr = new InputStreamReader(is);

// 用缓冲器读行

BufferedReader br = new BufferedReader(isr);

String line = null;

StringBuilder sb = new StringBuilder();

while ((line = br.readLine()) != null) {

System.out.println(line);

sb.append(line);

}

is.close();

isr.close();

br.close();

return sb.toString();

} catch (java.lang.NullPointerException e) {

System.err.println("NullPointerException " + e.getMessage());

logger.error(cmd);

} catch (java.io.IOException e) {

System.err.println("IOException " + e.getMessage());

}

throw new ExecuteException(cmd + "执行出错!");

}

if(SystemUtils.IS_OS_WINDOWS){

Process process;

try {

//process = new ProcessBuilder(cmd).start();

String[] param_array = cmd.split("[\\s]+");

ProcessBuilder pb = new ProcessBuilder(param_array);

process = pb.start();

/*process=Runtime.getRuntime().exec(cmd);*/

int exitCode = process.waitFor();

InputStream is = process.getInputStream();

InputStreamReader isr = new InputStreamReader(is);

BufferedReader br = new BufferedReader(isr);

String line;

StringBuilder sb = new StringBuilder();

while ((line = br.readLine()) != null) {

System.out.println(line);

sb.append(line);

}

is.close();

isr.close();

br.close();

return sb.toString();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

throw new ExecuteException(cmd + "执行出错!");

}

throw new UnHandledOSException("不支持本操作系统");

}

java代码执行linux命令_怎么用java代码运行linux命令相关推荐

  1. 创建快捷方式命令_如何使用桌面快捷方式运行命令提示符命令

    如何使用桌面快捷方式运行命令提示符命令 如果需要快速访问常用命令,则可以为命令提示符命令创建桌面快捷方式.就是这样. 如果您是常规的命令提示符用户,则可能每天都会使用一些命令.例如,我有一个简单的命令 ...

  2. lxrun不是内部或外部命令_在Win10 安装 WSL的Linux子系统,解决cmd中执行lxrun时提示“不是内部或外部命令”...

    Win10 安装Linux子系统原理就是安装一个(Linux系统的)应用程序.使用应用程序一般的使用Linux子系统,非常方便. 第一步:启用开发者模式 启用开发者模式,其实很简单,本人参考的是该文章 ...

  3. java反编译是什么_什么是Java代码的编译与反编译?

    Java代码的编译与反编译 2017-02-21 Hollis 数盟 一.什么是编译 1.利用编译程序从源语言编写的源程序产生目标程序的过程. 2.用编译程序产生目标程序的动作. 编译就是把高级语言变 ...

  4. python项目打包部署到linux系统_把python项目打包到linux执行-女性时尚流行美容健康娱乐mv-ida网...

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页 > 高级搜索 webpack 打包 node. ...

  5. openstack常用运维命令_运维人员常用的Linux命令汇总

    作为运维人员,这些常用命令不得不会,掌握这些命令,工作上会事半功倍,提供工作效率. 一.文件和目录 cd命令,用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径. cd ...

  6. linux vim命令_提升生产力的20大Linux Vim命令

    linux vim命令 VIM or the Vi Improved text editor is one of the most advanced text editors available. L ...

  7. java 执行字节码_深入理解java:1.2. 字节码执行引擎

    执行引擎是Java虚拟机的核心组成部分之一. 首先,想想C++和Java在编译和运行时到底有啥不一样? 下图左边,C++发布的就是机器指令, 而下图右边Java发布的是字节码,字节码在运行时通过JVM ...

  8. java程序启动命令_如何用java启动windows命令行程序

    先请编译和运行下面程序: import java.util.*; import java.io.*; public class BadExecJavac2 { public static void m ...

  9. linux 重启命令_如何在 Ubuntu 和其他 Linux 发行版中启动、停止和重启服务 | Linux 中国...

    服务是必不可少的后台进程,它通常随系统启动,并在关机时关闭.-- Sergiu 服务是必不可少的后台进程,它通常随系统启动,并在关机时关闭.如果你是系统管理员,那么你会定期处理服务.如果你是普通桌面用 ...

  10. 线程启动语句的顺序是否决定线程的执行次序。_详细分析 Java 中启动线程的正确和错误方式

    start 方法和 run 方法的比较 代码演示: /** * * start() 和 run() 的比较 * * * @author 踏雪彡寻梅 * @version 1.0 * @date 202 ...

最新文章

  1. 3.4.2 停止等待协议
  2. 通道注意力改进ECANet
  3. 【vue】介绍一个vuejs 和 element 搭建的一个后台管理界面
  4. [转]Ubantu vmware tools 安装
  5. 关于photoswiper展示时图片自适应的问题
  6. Vue2.x源码学习笔记-Vue实例的属性和方法整理
  7. 区分Activity的四种加载模式(转)
  8. JavaScript快速入门-ECMAScript本地对象(String)
  9. 犹豫了几个月,我还是跳槽了....
  10. 51CTO寄来的奖品
  11. 绝对定位relative、相对定位absolute(脱离文档流)
  12. vs 2008 xp 试用版 升级办法
  13. 哈哈,我把熊猫烧香病毒扒了!
  14. adobe flash player android 4.4,adobe flash player最新版
  15. javplayer 使用教程_PS教程连载第91课:PS核心功能:剪贴蒙版讲解
  16. Android:layout_weight详解
  17. 数学建模——微分方程
  18. 10个iPad Air常见小问题及解决方法汇总
  19. 浅谈RabbitMQ的基石—高级消息队列协议(AMQP)
  20. js中的颜色对应的常量代码code

热门文章

  1. 15 设置系统分词器
  2. 我打败了妈妈 - 张朔
  3. gevent的同步与异步
  4. NYOJ题目170网络的可靠性
  5. 更改AngularJS的语法解析符号
  6. Web Session和Cookie
  7. 关于NavigateUrl中绑定Eval()方法时出现服务器标记的格式不正确的解决方法
  8. NOIP2018赛前停课集训记——最后的刷板子计划
  9. ubuntu desktop的分辨率设置
  10. log2:USB ,有线网, 安卓设备作外接WiFi