簡體   English   中英

如何使用ProcessBuilder執行shell重定向(command> output.txt)?

[英]How to perform a shell redirection (command > output.txt) using ProcessBuilder?

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

嘗試一下(只顯示解決方案的重要部分):

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

這樣你就明確地調用了cmd 在Linux中,您可以調用bash或您使用的任何shell。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM