调用Runtime.getRuntime().EXEC()

Joh*_*aja 8 java runtime.exec

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

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);
    }
Run Code Online (Sandbox Code Playgroud)

假设我的数据库名称de mo意味着当我打印行时,我得到了像de only这样的数据库名称.数据库名称是否有空格?

Von*_*onC 15

你熟悉exec双引号错误吗?(用于Runtime.execProcessBuilder)

你可以试试:

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

只要确保你必须传递的所有参数都不包含双引号(而不是以双引号开头)
(参见 错误6511002)

任何参数如:

mykey="my value with space"
Run Code Online (Sandbox Code Playgroud)

将在内部(通过getRuntime()实施)改为

"mykey="myvalue with space""
Run Code Online (Sandbox Code Playgroud)

如果是这种情况,您需要对参数进行标记:

{"mykey=\"my\"" , "\"value with space\""}
Run Code Online (Sandbox Code Playgroud)