2015-10-05 208 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

相关问题