Java 代码为';不工作。它无限运行吗? String dumpCommand=“C:\\Program Files\\MySQL\\MySQL Server 5.0\\bin\\mysqldump”+“-u”+用户+“-p”+“+数据库+”>”+路径; Runtime rt=Runtime.getRuntime(); 文件测试=新文件(路径); 打印流ps; 试一试{ Process child=rt.exec(dumpCommand); System.out.println(“子项”+子项); ps=新打印流(测试); InputStream in=child.getInputStream(); int-ch; 而((ch=in.read())!=-1){ ps.write(ch); 系统输出写入(ch); } }

Java 代码为';不工作。它无限运行吗? String dumpCommand=“C:\\Program Files\\MySQL\\MySQL Server 5.0\\bin\\mysqldump”+“-u”+用户+“-p”+“+数据库+”>”+路径; Runtime rt=Runtime.getRuntime(); 文件测试=新文件(路径); 打印流ps; 试一试{ Process child=rt.exec(dumpCommand); System.out.println(“子项”+子项); ps=新打印流(测试); InputStream in=child.getInputStream(); int-ch; 而((ch=in.read())!=-1){ ps.write(ch); 系统输出写入(ch); } },java,mysql,Java,Mysql,代码不起作用。它无限运行吗?如何在java上运行mysqldump?由于要运行的命令的路径包含空格,因此需要在其周围加引号: String dumpCommand = "\"C:\\Program Files\\MySQL\\MySQL Server 5.0\\bin\\mysqldump\""+ " -u " + user +" -p" + " "+ database +" > "+path; 编辑 A将使这项工作更容易: // Step 1: set up the

代码不起作用。它无限运行吗?如何在java上运行mysqldump?

由于要运行的命令的路径包含空格,因此需要在其周围加引号:

String dumpCommand = "\"C:\\Program Files\\MySQL\\MySQL Server 5.0\\bin\\mysqldump\""+ " -u " + user +" -p" + " "+ database +" > "+path;         
编辑

A将使这项工作更容易:

// Step 1: set up the command line
ProcessBuilder pb = new ProcessBuilder(
    "C:\\Program Files\\MySQL\\MySQL Server 5.0\\bin\\mysqldump",
    "-u",
    user,
    "-p"
    database);

// Step 2: redirect output
File test = new File(path);
pb.redirectOutput(test);

// Step 3: start the process
Process proc = pb.start();

ProcessBuilder类具有许多其他功能(请参阅文档),包括为子流程定义环境变量、设置当前目录和重定向错误输出的功能。如果出现问题,后者在诊断问题时可能非常有用。

或者您可以使用String.trim()方法过滤掉空间。

不要使用
Runtime.exec()
,请使用
ProcessBuilder
如何对mysqldump命令使用ProcessBuilder()。项目位置在D:驱动器中。Mysqldump位置是C:\ProgramFiles\MySQL\MySQLServer5.0\bin\Mysqldump\这是Java 7还是Java 6?答案取决于使用java 6的情况…请帮助我fastjava.io.IOException:无法运行程序“C:\ProgramFiles\MySQL\MySQLServer5.0\bin\mysqldump”“:CreateProcess error=3,系统无法在java.lang.Runtime.exec(Runtime.java:593)中找到java.lang.ProcessBuilder.start(ProcessBuilder.java:460)处指定的路径在Dbcon.demoback.main(demoback.java:65)的java.lang.Runtime.exec(Runtime.java:431)和java.lang.Runtime.exec(Runtime.java:328)中,由于:java.io.IOException:CreateProcess error=3,系统找不到为mysqldump命令使用ProcessBuilder()的路径。项目位置在D:drive中。Mysqldump的位置是C:\ProgramFiles\MySQL\MySQLServer5.0\bin\Mysqldump\@Ajithlal-我添加了一些示例代码。可能值得尝试直接从命令行执行您正在构建的命令,以验证它是否有效,然后才尝试从Java执行它working@Ajithlal-使用Java 6,您必须自己重定向到该文件。启动进程后,您可以通过调用
proc.getInputStream()
读取程序输出,并将读取的内容写入指向
路径的
FileOutputStream
。您还可以通过调用
proc.getErrorStream()
单独读取错误输出,或者,如果更方便的话,您可以通过调用
pb.redirectErrorStream(true)
在启动进程之前将错误输出合并到标准程序输出中。trim只需在字符串的开头和结尾剪切空白。Ted所写的内容在可执行文件的文件路径中的空格处寻址,如果trim过滤空格,它将中断命令。