繁体   English   中英

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

[英]Writing command line output to a file with in Java

我正在从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 );
}

1.从Java程序成功执行命令后, 您需要读取输出,然后将输出转移到文件中。

例如:

    Process p = Runtime.getRuntime().exec("Your_Command");

    InputStream i = p.getInputStream();

    InputStreamReader isr = new InputStreamReader(i);

    BufferedReader br = new BufferedReader(isr);


    File f = new File("d:\\my.txt");

    FileWriter fw = new FileWriter(f);            // for appending use (f,true)

    BufferedWriter bw = new BufferedWriter(fw);

    while((br.readLine())!=null){


         bw.write(br.readLine());           // You can also use append.
  }

作为Andy回答的补充,我认为您必须阅读以下文章: http : //www.javaworld.com/jw-12-2000/jw-1229-traps.html

对于谁需要使用Java处理外部流程而言,这非常重要。

我想保持简单,并且您正在使用Windows,请尝试:

Process pr = rt.exec("cmd /c \"ping localhost > output.txt\"");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM