2015-10-05 176 views
6
public static String executeCommand(String command) { 
    StringBuffer sb = new StringBuffer(); 
    Process p; 
    try { 
     p = Runtime.getRuntime().exec(command); 
     p.waitFor(); 
    } BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); 
     String line = ""; 
     while ((line = reader.readLine()) != null) { 
     sb.append(line + "\n"); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return sb.toString(); 
} 

給定的代碼工作正常,執行任何命令,但我有一個命令,要求是/否作爲輸入。我如何將輸入提供給命令以進一步執行?帶提示執行命令是輸入

ex。

executeCommand("pio app data-delete model"); 

output- 
[INFO] [App$] Data of the following app (default channel only) will be deleted. Are you sure? 
[INFO] [App$]  App Name: twittermodeling 
[INFO] [App$]  App ID: 14 
[INFO] [App$] Description: None 
Enter 'YES' to proceed: 

所以我如何給予他們以進一步執行。

感謝

+1

你能給我們一個例子,像輸入字符串預期的行爲? – Tirath

+0

如果我得到它......你想使用由'p.waitFor()'返回的值來說出一個提示'Enter'YES'繼續:'。 – Tirath

回答

4

如果你真的需要通過 「YES」 到UNIX命令,你可以通過echo YES |前綴它。 echo YES | pio app data-delete model應強制刪除。

在runtime.exec()的上下文中,認爲無法正確評估管道,請參閱this post以獲取更多信息。

但是,您應該做的第一件事是檢查pio命令是否沒有「強制」標誌,通常是-f,這會忽略用戶交互。

+0

感謝它的工作。 –

+0

不客氣! – Aaron

+0

它在終端上工作正常,但是當我執行這個命令時echo YES | pio應用程序數據刪除模型在java中,它不工作 –

1

做這樣的:

line = reader.readLine(); 

if (line.toLowerCase().equals("yes")){ 
    .... 
} 
else if (line.toLowerCase().equals("no")){ 
    .... 
} 
else { 
    ... 
} 
+0

我想提供是或否作爲輸入,以便它可以進一步執行該命令。命令是不是給予是或否 –

+0

請給我們一些更多的信息在您的問題 – roeygol

相關問題