如何使用ProcessBuilder执行shellredirect(command> output.txt)?

我想使用ProcessBuilder备份一个MySQL数据库, >字符不会像我所期望的那样被解释。 这是我的代码:

 java.util.List<String> cmd = new java.util.ArrayList<>(); cmd.add("mysqldump"); cmd.add("-u"); cmd.add("root"); cmd.add("-p"+password); cmd.add("DBx"); cmd.add(">"); cmd.add("DBbk.sql"); ProcessBuilder pb = new ProcessBuilder(cmd); pb.directory(new File(".")); Process p = pb.start(); p.waitFor(); BufferedReader err = new BufferedReader(new InputStreamReader(p.getErrorStream())); while((line = err.readLine()) != null) { System.out.println(line); } 

输出是:

警告:在命令行界面上使用密码可能不安全。
 mysqldump:找不到表格:“>”

试一试(只显示解决方案的重要部分):

 new ProcessBuilder("cmd", "/C", "your_command > DBbk.sql").start() 

这样你明确地调用cmd 。 在Linux中,你可以调用bash或者你使用的任何shell。

进程生成器直接执行程序,而不是通过shell /命令提示符来执行。 因此,你不会得到shell的任何好的功能,例如重定向的>字符。 抱歉。