我想使用 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: ">"
最佳答案
进程构建器直接执行程序,而不是通过 shell/命令提示符执行。因此,您不会获得 shell 的任何好的功能,例如用于重定向的 >
字符。对不起。
关于java - 如何使用 ProcessBuilder 执行 shell 重定向(命令 > output.txt)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19172593/