假设我有一个程序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?。如果必须,您可以查看它以供参考。
答案 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);
}
}