我想使用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的任何好的功能,例如重定向的>
字符。 抱歉。