BufferedReader在实时读取时打印输入

时间:2016-12-22 13:20:18

标签: java linux

我的java方法如下所示:

    private String executeCommand(String command) {

    StringBuffer output = new StringBuffer();
    String line = "";
    Process proc;
    try {

        proc = Runtime.getRuntime().exec(command);

        InputStream inputStream = proc.getInputStream();
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

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

        }
         proc.waitFor();

    } catch (Exception e) {
        e.printStackTrace();
    }

    return output.toString();

}

如果我发送小命令,如" ls -l"它执行命令并打印结果。但是我需要这个函数来读取运行数天的应用程序的输出,它会在运行时频繁打印输出。所以我不能等到应用程序完成"我需要实时输出。任何人都知道如何立即打印输出?谢谢你的帮助......

1 个答案:

答案 0 :(得分:1)

最简单的方法是将命令的输出直接重定向到文件:

ls -l > ./ls.output

在这种情况下,您无需等待命令结束。它将是操作系统来处理输出重定向到文件。

如果您还需要为错误编写输出,则需要如下命令:

ls -l > ./ls.output 2> ./ls.err

其中./ls.output是正常输出,./ls.err是错误输出