java - 如何使用 ProcessBuilder 执行 shell 重定向(命令 > output.txt)?

标签 java mysql windows cmd

我想使用 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/

相关文章:

windows - 如何在 Windows 上的 Jenkins 配置中设置 PATH 环境变量?

java - 如何在容器化 Jenkins 中使用主机系统中的 JDK 11 构建 Spring Boot 2

java - OSGI kafka 客户端包由于缺少约束导致框架异常

Mysql查询/操作顺序

MySQL 限制 Varchar 选择

php - 从 WordPress 自定义表中删除行

windows - TerminateProcess(GetCurrentProcess(), exit_code) 之后是否需要等待?

Windows脚本FOR命令重命名目录中的所有文件

java - PDF 数据的 AngularJS POST 总是失败

java - 如何将 json 字符串作为 RESTFUL 请求发送给 postman