我有一個Java應用程序,使用wget從Web服務下載文件。當通過java執行命令時,它返回:「wget:不是http或ftp url:」 當我直接執行命令時,它運行時沒有問題。這裏是我的代碼:Runtime.exec命令不工作
try {
Debug.println("Starting copy of "+srcFile+" to "+destFile);
String command = "wget -O " + destFile + " \""+ srcFile +"\"";
Process p = Runtime.getRuntime().exec(command);
int exitCode = p.waitFor();
if(Debug.isDebugMode())
{
Debug.println(command);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String s;
while((s = stdInput.readLine()) != null)
{
Debug.println(s);
}
}
Debug.println("Finished with code: " + String.valueOf(exitCode));
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
這是輸出:
24/04/2013 10:11:05 Starting copy of stoppenmetroken.webcolors.local/service/track?track=3b1ac68a288345c183a08c714901a398&mac=089000A09090 to /opt/byato/data/song/3b1ac68a288345c183a08c714901a398
24/04/2013 10:11:05 wget -O /opt/byato/data/song/3b1ac68a288345c183a08c714901a398 "stoppenmetroken.webcolors.local/service/track?track=3b1ac68a288345c183a08c714901a398&mac=089000A09090"
24/04/2013 10:11:05 wget: not an http or ftp url: "http://stoppenmetroken.webcolors.local/service/track?track=3b1ac68a288345c183a08c714901a398&mac=089000A09090"
24/04/2013 10:11:05 Finished with code: 1
PS:我刪除了HTTP:輸出//一部分,因爲我沒有足夠的信譽分-.-
我錯過了什麼?
通過'Runtime#exec'上的'ProcessBuilder'開始。它允許你傳遞參數作爲單獨的參數,而不必嘗試和建立一個字符串,照顧引號 – MadProgrammer 2013-04-24 08:28:32
'Runtime#exec(String [])'避免了需要建立一個單一的字符串的命令。 – user1252434 2013-04-24 08:29:47