Java在命令行中不断更新命令提示符中的一行时,从命令行中执行的程序中获取输出

Java在命令行中不断更新命令提示符中的一行时,从命令行中执行的程序中获取输出,java,io,command-prompt,outputstream,Java,Io,Command Prompt,Outputstream,我有一个关于如何从java程序通过命令行运行的特定程序实例中获取输出的快速问题。只要程序输出多行,我就能够得到程序的输出,但是如果是一个更新当前行的程序,我似乎运气不佳。例如,当我尝试使用ffmpeg将mp4转换为mp3时,它只会有一行文件,其中包含当前大小和运行时间,而在java程序中运行时,我似乎无法获得这些文件。下面是我使用的代码,它在有多行时工作: InputStream is = pr.getInputStream(); InputStreamReader isr = new

我有一个关于如何从java程序通过命令行运行的特定程序实例中获取输出的快速问题。只要程序输出多行,我就能够得到程序的输出,但是如果是一个更新当前行的程序,我似乎运气不佳。例如,当我尝试使用ffmpeg将mp4转换为mp3时,它只会有一行文件,其中包含当前大小和运行时间,而在java程序中运行时,我似乎无法获得这些文件。下面是我使用的代码,它在有多行时工作:

InputStream is = pr.getInputStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);
    String line;
    System.out.printf("Output of running %s is:\n",
            Arrays.toString(command1));
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }

    try {
        int exitValue = pr.waitFor();
        System.out.println("\n\nExit Value is " + exitValue);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

任何帮助都将不胜感激!谢谢

我想我知道发生了什么
readLine()
正在查找“\n”字符。单行程序发出一个“\r”返回到行的开头并一遍又一遍地重新写入

我阅读了commons io和javadocs,它们都没有读线(char c),可以一直读到遇到特定字符为止,所以不幸的是,我认为您必须自己编写代码:\

如果使用br.readLine(),则需要确保它已终止

来自javadoc

读一行文字。行被认为是由换行符('\n')、回车符('\r')或回车符中的任何一个终止的 返回,然后立即换行


使用read only()并逐个打印字符可能更容易

谢谢!我会调查的。