使用java执行命令并将生成的输出保存在另一个目录中

时间:2017-11-05 14:00:02

标签: java process command

我正在开发一个eclipse rcp产品,我需要从一个目录运行一个命令,需要将输出保存在另一个目录中。

命令的输出是一个文件。

我不知道怎么做。

我的代码就像这样无法正常工作。

Runtime r = Runtime.getRuntime();
Process  p = r.exec(("CMD /C cd D:\\dir1\\bin" + " && " + command),
            null, new File("D:\\Data\\test"));

所以,命令需要从dir1 / bin运行,并且该命令的输出是一个应保存在data / test中的文件。

但是从上面的代码中,输出(即生成的文件)保存在dir1 / bin中,这是不期望的。

2 个答案:

答案 0 :(得分:0)

echo This is a command > output.txt

尝试添加' > output.txt的'到命令的末尾将其插入文件

答案 1 :(得分:0)

您可以将进程对象(p.getInputStream())和FileOutputStream给出的InputStream用于文件。 创建一个带有无限循环的新线程,读取其中的字符并将它们写入文件。

Process p = ....
InputStream is = p.getInputStream();
FileOutputStream fos = new FileOutputStream(new File("output.txt"));
new Thread(new Runnable() {
    public void run() {
        while (true) {
            char c = (char)is.read();
            if (c > -1) {
                fos.write(c);
            } else {
                return;
            }
        }
    }
}).start();

我没有测试代码但它应该可以工作。