如何在执行时立即显示存储在.txt文件中的.java文件的编译结果?

时间:2017-05-04 16:18:57

标签: java file processbuilder

假设我有一个程序A.在本程序A中,我正在编译程序B并将结果存储在文件" Error.txt"中。代码如下:

import java.io.IOException;
public class CompileFile
{   
    public void Compile() throws IOException
    {
        ProcessBuilder p = new ProcessBuilder("cmd.exe", "/C", "javac *.java 2> Error.txt");

        p.start();
    }   
}

现在,我必须显示" Error.txt"的内容。从程序A中。我使用简单的FileReader + BufferedReader。但是,我没有得到任何输出。

Error.txt文件确实包含编译错误/结果,但发生这种情况 AFTER 程序A完成执行。程序A执行时,它仍然为空。因此,我第一次没有结果 我运行程序A.

如何解决此问题?

注意:这是我上一期提问的后续问题:How to store the result of compilation (using javac) to a text file?。如果必须,您可以查看它以供参考。

1 个答案:

答案 0 :(得分:1)

开始waitFor后,您必须使用ProcessBuilder

public static void main(String[] args) throws IOException, InterruptedException {

    ProcessBuilder p = new ProcessBuilder("cmd.exe", "/C", 
            "javac path\\of_your_file\\file.java 2> path\\of_your_file\\Error.txt");
    Process process = p.start();
    process.waitFor();//wait until your process finished 

    Scanner in = new Scanner(Paths.get("path\\of_your_file\\Error.txt"));
    while (in.hasNextLine()) {
        String line = in.nextLine();
        System.out.println(line);
    }
}