java Runtime这个类的exec方法,我想先切换下目录,然后再执行命令,怎么来写啊,在一个进程中完成

 我来答
大菜篮子
推荐于2018-01-26 · TA获得超过762个赞
知道小有建树答主
回答量:83
采纳率:100%
帮助的人:128万
展开全部
这么久没人给你回复啊。
Runtime这个类的exec不是有支持指定工作目录的重载方法么

Process exec(String[] cmdarray,
String[] envp,
File dir) 在指定环境和工作目录的独立进程中执行指定的命令和变量。

Process exec(String command, String[] envp, File dir) 在有指定环境和工作目录的独立进程中执行指定的字符串命令。

上面两个方法的dir参数就是目录。
追问
C:\Documents and Settings\Administrator>mysql -uroot -padmin jaildb5 < C:\Progra
m Files\Apache Software Foundation\Tomcat 6.0\webapps\jail\version\13.sql;
没办法,嘿嘿。
如这样的语句就根本执行不了,我想先切换到version 那个目录下,然后在执行 13.sql文件,你能给写个例子吗,谢谢啊!
追答
你这个问题的关键问题不是执行位置,而是输入流的重定向,即那个<

编写代码的时候,你要注意:不能exec后就没事了。由于命令执行时需要时间的,尤其是还要读文件。这时你如果不主动等待命令结束,会出现一个现象,即Java执行完了退出,连带着启动的命令进程也被终止。
所以,执行命令后紧接着要
Process process = runtime.exec...
process.waitFor();

完整的应该是:
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("e:/Test/Test.bat <e:/Test/test.txt");
process.waitFor();

另外,如果觉得<输入流不方面,可以使用如下形式执行命令:
ProcessBuilder builder = new ProcessBuilder("e:/Test/Test.bat");

builder.redirectInput(new File("e:/Test/test.txt"));
Process process = builder.start();
process.waitFor();
来自:求助得到的回答
匿名用户
2018-01-26
展开全部
Runtime.getRuntime().exec("cmd /c cd c:\\ 。。。");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友752e907
2013-03-15 · TA获得超过513个赞
知道小有建树答主
回答量:809
采纳率:50%
帮助的人:447万
展开全部
切换目录?cd +你要切换的路径
更多追问追答
追问
为什么:
C:\Documents and Settings\Administrator>mysql -uroot -padmin jaildb5 mysql -uroot -padmin jaildb5 < C:\Progra
m Files\Apache Software Foundation\Tomcat 6.0\webapps\jail\version\13.sql;
求解,万谢!
追答
系统权限问题,如果是Win7的话,访问C盘的目录需要管理员权限
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式