我想使用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);
}
输出结果为:
Warning: Using a password on the command line interface can be insecure. mysqldump: Couldn't find table: ">"
答案 0 :(得分:7)
进程构建器直接执行程序,而不是通过shell /命令提示符执行它。因此,您没有像>
字符那样获得shell的任何不错的功能以进行重定向。遗憾。
答案 1 :(得分:1)
尝试一下(只显示解决方案的重要部分):
new ProcessBuilder("cmd", "/C", "your_command > DBbk.sql").start()
这样你就明确地调用了cmd
。在Linux中,您可以调用bash
或您使用的任何shell。