【问题标题】:How to write into and read from command line in Java ? [duplicate]如何在 Java 中写入和读取命令行? [复制]
【发布时间】:2011-09-15 15:04:32
【问题描述】:

可能重复:
Java external program

我正在尝试编写一个程序以在命令行上编写命令,

例如;

ipconfig

然后得到命令的响应,所以我想将命令写入命令​​行并得到它的响应。我在网上搜索过它,发现 apache cli 用于在 Java 中执行此操作,但实际上我并没有清楚地了解它是如何完成的。您能否通过几行代码或有关编写和阅读命令的教程来帮助我了解我的情况?

非常感谢大家

【问题讨论】:

  • apache cli package 帮助您处理在调用程序时提供给程序的命令行参数。 AFAIK,它不会调用外部命令或从它们捕获输入。
  • @Chris,就像我自己回答的一样。尽管我尝试不提供实际代码,并在这种简单的情况下为提问者留下一些东西:)

标签: java command-line command-line-interface


【解决方案1】:

您可以将其作为Process 启动,并按照here 的描述捕获进程的InputStream:

Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("ipconfig"); // you might need the full path
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;

while ((line = br.readLine()) != null) {
    System.out.println(line);
}

编辑:我从上面的链接复制了这段代码,但代码似乎错误。你不需要输出流吗?编辑2:没有。

getInputStream()

获取子进程的输入流。流获取数据 从代表的进程的标准输出流管道传输 这个 Process 对象。

很好的命名约定...

【讨论】:

  • 非常感谢它工作得很好:)
  • 但它有效。我试了一下,可以得到查询的结果。我也会尝试使用 Process.getOutputStream()
  • 我的错。我要删除我之前的评论。
  • 没问题,它也适用于 Process.getOutputStream。谢谢大家。
【解决方案2】:

请参阅 Process 和 ProcessBuilder 类。

具体来说,您将创建一个Process。 Process.getOutputStream() 给出一个InputStream,您可以从中读取进程的输出。您还需要阅读Process.getErrorStream() 以了解进程报告的任何错误。

【讨论】:

  • 非常感谢,在哪里可以获得有关命令行和示例的基本教程?你知道一个好的网站吗?
【解决方案3】:

试试这个输入用户值。

java.util.Scanner input = new Scanner( System.in);

System.out.println("Please Enter your Name: ");             
    String empName = input.nextLine();

【讨论】:

  • 请重新阅读问题。他不想阅读标准输入,他想阅读衍生进程的输出。
猜你喜欢
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
  • 2015-08-07
  • 2015-12-06
  • 1970-01-01
  • 2018-07-15
  • 2018-12-08
  • 2018-10-04
相关资源
最近更新 更多