Задать вопрос
Ответы пользователя по тегу Программирование
  • Как читать с консольного окна, если оно не выводит ничего в stdout?

    @nuclearthinking
    Ковыряясь в одном интересном приложении натыкался на что то что возможно вам подойдёт

    метод выполняет консольную команду
    public static int runProcess(File workDir, String... command) throws Exception {
            ProcessBuilder pb = new ProcessBuilder(command);
            pb.directory(workDir);
            pb.environment().put("JAVA_HOME", System.getProperty("java.home"));
            if(!pb.environment().containsKey("MAVEN_OPTS")) {
                pb.environment().put("MAVEN_OPTS", "-Xmx1024M");
            }
    
            Process ps = pb.start();
            (new Thread(new Builder.StreamRedirector(ps.getInputStream(), System.out))).start();
            (new Thread(new Builder.StreamRedirector(ps.getErrorStream(), System.err))).start();
            int status = ps.waitFor();
            if(status != 0) {
                throw new RuntimeException("Error running command, return status !=0: " + Arrays.toString(command));
            } else {
                return status;
            }
        }


    метод StreamRedirector использующийся в предыдущем методе
    private static class StreamRedirector implements Runnable {
            private final InputStream in;
            private final PrintStream out;
    
            public void run() {
                BufferedReader br = new BufferedReader(new InputStreamReader(this.in));
    
                try {
                    String ex;
                    while((ex = br.readLine()) != null) {
                        this.out.println(ex);
                    }
    
                } catch (IOException var3) {
                    throw Throwables.propagate(var3);
                }
            }
    
            @ConstructorProperties({"in", "out"})
            public StreamRedirector(InputStream in, PrintStream out) {
                this.in = in;
                this.out = out;
            }
        }


    попробуйте исследовать библиотеки которые используются данным методом
    боюсь что готовое решение я вам предоставить не смогу, ещё очень слабо разбираюсь в Java
    Ответ написан
    Комментировать