应该打印文件列表(在file1中)和当前进程(在file2中)。但是,它只在控制台(终端)中打印file1中的内容。我检查了file2中的内容,它具有预期的内容,但它不会在控制台(终端)中打印file2中的内容。另外,another.hasNext()始终为false。任何人都可以帮我解决这个问题吗? 这是我的代码:
File file1 = new File("1.txt");
ProcessBuilder pb1 = new ProcessBuilder("ls");
pb1.redirectOutput(file1);
pb1.start();
Scanner s = new Scanner(file1);
while(s.hasNext()) {
System.out.println(s.next());
}
System.out.println("_____________________________");
File file2 = new File("2.txt");
pb1 = new ProcessBuilder("ls");
pb1.redirectOutput(file2);
pb1.start();
Scanner another = new Scanner(file2);
while(another.hasNext()) {
System.out.println(another.next());
}
答案 0 :(得分:0)
ProcessBuilder 将启动一个新进程来运行命令( ls ),它是异步的。
您可以使用waitFor
等待流程执行完毕:
pb1.redirectOutput(file1);
pb1.start().waitFor();
...
pb1.redirectOutput(file2);
pb1.start().waitFor();