0

我正在阅读使用 Java 进程调用的脚本的输出。但是,在脚本运行的中间,它会在某些情况下提示用户回答 y/n 以继续。但是,在阅读了 StackOverflow 上的许多帖子后,我仍然坚持检测提示,然后在进程仍在运行时发送响应。

如果有人有任何想法,那就太棒了。

我试过从 Scanner 类和 System.console 中阅读,但没有成功。

这是我正在使用的代码的一部分。

    Process p;

    String file = "./upgrade.sh";


        cmds.add(file);
        cmds.add(sourcePath);
        cmds.add(outputDirectoryPath);
        cmds.add(zip);
        cmds.add("-c");
    //}

    pb = new ProcessBuilder(cmds);
    pb.directory(new File(binDir));

    p = pb.start();

    BufferedReader reader = new BufferedReader (new InputStreamReader(p.getInputStream()));
    BufferedReader reader2 = new BufferedReader (new InputStreamReader(p.getErrorStream()));
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));

    try 
    {
        String line = reader.readLine();
        while (line != null) 
        {
            System.out.println(line);
            line = reader.readLine();
        }


        reader.close();
        writer.close();
    } 
    catch (IOException e) 
    {
        e.printStackTrace();
    }

    p.destroy();
4

1 回答 1

1

问题是您使用BufferedReader. 它只会在读取整行时返回,即行分隔符。但是,如果脚本要求有提示的内容,则不会有行分隔符!结果它不会返回。

您必须使用其他类型的阅读器才能控制该过程。

于 2013-06-06T23:11:35.393 回答