扫描仪不读取 ProcessBuilder 创建的第二个文件
Scanner does not read the second file created by ProcessBuilder
它应该打印文件列表(在 file1 中)和当前进程(在 file2 中)。但是,它只在控制台(终端)中打印文件 1 中的内容。我检查了 file2 中的内容,它具有预期的内容,但它没有在控制台(终端)中打印 file2 中的内容。此外,another.hasNext() 始终为假。任何人都可以帮我解决这个问题吗?
这是我的代码:
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());
}
ProcessBuilder 将启动一个新进程到 运行 命令(ls),它是异步的。
您可以使用waitFor
等待进程完成执行:
pb1.redirectOutput(file1);
pb1.start().waitFor();
...
pb1.redirectOutput(file2);
pb1.start().waitFor();
它应该打印文件列表(在 file1 中)和当前进程(在 file2 中)。但是,它只在控制台(终端)中打印文件 1 中的内容。我检查了 file2 中的内容,它具有预期的内容,但它没有在控制台(终端)中打印 file2 中的内容。此外,another.hasNext() 始终为假。任何人都可以帮我解决这个问题吗? 这是我的代码:
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());
}
ProcessBuilder 将启动一个新进程到 运行 命令(ls),它是异步的。
您可以使用waitFor
等待进程完成执行:
pb1.redirectOutput(file1);
pb1.start().waitFor();
...
pb1.redirectOutput(file2);
pb1.start().waitFor();