java - 使用 Java 将命令行输出写入文件

标签 java command-line

我正在从 java 运行命令行命令:

ping localhost > output.txt

命令是通过 Java 发送的,如下所示:

Process pr = rt.exec(command);

由于某种原因,文件没有创建,但是当我从 命令行本身,文件确实创建并且输出在该文件中。

为什么 java 命令不创建文件?

最佳答案

因为你还没有将它指向一个文件。

在命令行上,您已请求将其重定向到一个文件。在 Java 中,您必须通过 Process 对象提供的 InputStream(对应于实际流程的输出流)来做同样的事情。

以下是您如何从流程中获取输出。

InputStream in = new BufferedInputStream( pr.getInputStream());

您可以从这里读取直到 EOF,然后将输出写入文件。如果您不希望此线程阻塞,请从另一个线程读取和写入。

InputStream in = new BufferedInputStream( pr.getInputStream());
OutputStream out = new BufferedOutputStream( new FileOutputStream( "output.txt" ));

int cnt;
byte[] buffer = new byte[1024];
while ( (cnt = in.read(buffer)) != -1) {
   out.write(buffer, 0, cnt );
}

关于java - 使用 Java 将命令行输出写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11650042/

相关文章:

VBA:运行 "Elevated"命令(Shell 与 ShellExecute)

java - 最终类型转换概念不适用于重载

java - 插入 MySQL Java

Python:编译成 Unix 命令行应用程序

javascript - 在命令行脚本中包含没有 HTML 或 DOM 的 JS 文件中的 Javascript 文件

windows - 如何在 Windows 上停止 mongodb 服务器?

java - Apache FOP : Resolve to local docbook installation

java - 具有动态属性的对象的添加/编辑操作

java - Android 添加多个 View 到 View 组

linux - libxml2 的问题原因(我无法在我的参数中访问...... wifi,蓝牙......)