博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Runtime.getRuntime.exec(String)与exec(String[])的区别
阅读量:6993 次
发布时间:2019-06-27

本文共 1276 字,大约阅读时间需要 4 分钟。

hot3.png

Runtime.getRuntime.exec(String)

这个方法传入的是字符串,JAVA内部处理时会对字符串进行分割成数据,然后调用exec(String[],null,null)方法

public Process exec(String command) throws IOException {	return exec(command, null, null);    }public Process exec(String command, String[] envp, File dir)        throws IOException {        if (command.length() == 0)            throw new IllegalArgumentException("Empty command");	StringTokenizer st = new StringTokenizer(command);	String[] cmdarray = new String[st.countTokens()]; 	for (int i = 0; st.hasMoreTokens(); i++)	    cmdarray[i] = st.nextToken();	return exec(cmdarray, envp, dir); public Process exec(String[] cmdarray, String[] envp, File dir)	throws IOException {	return new ProcessBuilder(cmdarray)	    .environment(envp)	    .directory(dir)	    .start();    }

Runtime.getRuntime.exec(String[])

该方法会最后也是执行exec(String[],null,null)

public Process exec(String cmdarray[]) throws IOException {	return exec(cmdarray, null, null);    }    public Process exec(String[] cmdarray, String[] envp, File dir)	throws IOException {	return new ProcessBuilder(cmdarray)	    .environment(envp)	    .directory(dir)	    .start();    }

从上面可以看出,如果执行一整条已经拼接好的命令时,可以用exec(String);如果命令参数分开时,可以用exec(String[]);如果把一条已经拼接好的字符串执行第二个方法,就会报命令找不到。

转载于:https://my.oschina.net/nixuewen/blog/180948

你可能感兴趣的文章
Kafka学习之四 Kafka常用命令
查看>>
ruby 【rails在win7_64位操作系统安装】
查看>>
回溯法--0-1背包问题
查看>>
ubuntu hadoop集群 master免密码登陆到slave节点
查看>>
css3的背景多重运用
查看>>
关于 [栈溢出后jmp esp执行shellcode] 原理分析
查看>>
安全疏散(一)
查看>>
python_sort(key=) 的使用
查看>>
UT源码116
查看>>
git仓库远程连接GitHub
查看>>
Mysql配置参数说明
查看>>
Hello world,Hello 2015,Bye 2014
查看>>
asp.net中使用单例
查看>>
[Asp.Net]状态管理(Session、Application、Cache)
查看>>
mysql 跨服务器复制数据库
查看>>
用递归删除各种节点
查看>>
tomcat快速部署脚本
查看>>
20155332 2016-2017-2 《Java程序设计》第10周学习总结
查看>>
java 中list进行动态remove处理
查看>>
jsp不解析el表达式,不识别jstl标签,找不到http://java.sun.com/jsp/jstl/core
查看>>