如何在执行时立即显示存储在.txt 文件中的.java 文件的编译结果?
How to display the result of compilation of a .java file stored in a .txt file immediatly on execution?
假设我有一个程序 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();
}
}
现在,我必须从程序 A 中显示 "Error.txt" 的内容。我使用的是简单的 FileReader + BufferedReader。但是,我没有得到任何输出。
Error.txt 文件确实包含编译 errors/result,但这发生在 AFTER 程序 A 完成执行。在执行程序 A 时它保持为空。因此,我第一次没有结果我运行程序A。
如何解决这个问题?
注意:这是我上一个问题 的后续问题。有需要可以参考一下
您必须在开始 ProcessBuilder
后使用 waitFor
:
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);
}
}
假设我有一个程序 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();
}
}
现在,我必须从程序 A 中显示 "Error.txt" 的内容。我使用的是简单的 FileReader + BufferedReader。但是,我没有得到任何输出。
Error.txt 文件确实包含编译 errors/result,但这发生在 AFTER 程序 A 完成执行。在执行程序 A 时它保持为空。因此,我第一次没有结果我运行程序A。
如何解决这个问题?
注意:这是我上一个问题
您必须在开始 ProcessBuilder
后使用 waitFor
:
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);
}
}