扫描程序不读取ProcessBuilder创建的第二个文件

时间:2015-12-28 02:58:53

标签: java file java.util.scanner processbuilder

应该打印文件列表(在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());
    }

1 个答案:

答案 0 :(得分:0)

ProcessBuilder 将启动一个新进程来运行命令( ls ),它是异步的。

您可以使用waitFor等待流程执行完毕:

    pb1.redirectOutput(file1);
    pb1.start().waitFor();
    ...
    pb1.redirectOutput(file2);
    pb1.start().waitFor();