繁体   English   中英

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

[英]Java getting output from program executed in command line when it constantly updates a single line in the command prompt

我有一个关于从我的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,但它们都没有readLine(char c),直到遇到特定字符时才进行读取,因此不幸的是,我认为您必须自己编写代码。 :\\

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

从javadoc https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#readLine()

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

仅使用read()并一一打印字符可能更容易

暂无
暂无

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

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