调用Runtime.getRuntime()。EXEC() [英] Runtime.getRuntime().exec()

查看:139
本文介绍了调用Runtime.getRuntime()。EXEC()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只能在数据库名称包含like(new database(myid)等时才能读取文件。
我给出以下示例代码:

I can not read a file only when database name contains like (new database (myid) etc. I give a following example code:

dumpCommand = "C:/Program Files/MySQL/MySQL Server 5.0/bin/mysqldump -h"+hostName+user+databaseName;
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(dumpCommand);                     
InputStream in = proc.getInputStream();              
BufferedReader br=new BufferedReader(new InputStreamReader(in));
String line =null;

 while((line=br.readLine())!=null)
{
//able to read line only when database name like abc,datastore etc...
System.out.println(line);
    }

假设我的数据库名称de mo表示当我打印行时,我得到的数据库名称就像de only。
当数据库名称为空格时是否可以?

Suppose my database name de mo means when I print line I got database name like de only. Is possible when database name with empty space?

推荐答案

你熟悉 exec 双引号错误吗?(对于 Runtime.exec ProcessBuilder

Are you familiar with the exec double-quotes bug? (for Runtime.exec or ProcessBuilder)

您可以尝试:

Runtime.getRuntime().exec(new String[] {
  "\"C:/Program Files/MySQL/MySQL Server 5.0/bin/mysqldump\"", 
  "-h", 
  hostName+user+databaseName});

只需确保您传递的所有参数都不包含双引号(而 not 以双引号开头)

(参见 bug 6511002

Just make sure none of your parameters you will have to pass contains double quotes (while not beginning with double quotes)
(see bug 6511002)

任何参数如:

mykey="my value with space"

内部(通过 getRuntime()实施)更改为

"mykey="myvalue with space""

如果是这样的话,你需要对参数进行标记化:

If that is the case, you would need to tokenize the argument:

{"mykey=\"my\"" , "\"value with space\""}

这篇关于调用Runtime.getRuntime()。EXEC()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆