我正在从 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/