classe Runtime do Java fornece o acesso ao ambiente de tempo de execução em que o aplicativo está sendo executado . Métodos exec do tempo de execução permite que você execute programas externos a partir de um aplicativo Java. Executando aplicações externas dentro de um aplicativo Java permite que você abra uma página web em um navegador, interagir com utilitários do sistema operacional ou abrir uma janela console. Receba as aplicações Runtime Environment
Todos Java têm uma instância do ambiente de tempo de execução. Use o método de Runtime getRuntime () para acessar esse objeto . Por exemplo :
Runtime rt = Runtime.getRuntime ();
Executar um aplicativo externo
Runtime oferece várias maneiras de chamar o método exec, que retorna um objeto de processo . A maneira mais simples para executar uma aplicação externa é o método exec Runtime (comando String) , onde " comando " é a linha de comando que executa a aplicação. A chamada a seguir executa o comando " ls " para obter uma listagem de diretório para o diretório root em um sistema Linux ou Unix :
Processo p = rt.exec (" ls /");
o método exec também pode ser chamado com um array contendo o comando e seus argumentos , as configurações de variáveis de ambiente e diretório de trabalho .
Obter informações Processo
o Processo classe fornece acesso ao fluxo de entrada, fluxo de saída, fluxo de erro eo código de saída do processo de execução.
o método Process.getInputStream fornece acesso ao processo " fluxo de saída padrão através de fluxo de entrada do aplicativo. O fluxo deve ser tamponado . Continuando o exemplo anterior , o seguinte código acessa a saída do " ls /" comando imprime os resultados
InputStream istrm = p.getInputStream (); . InputStreamReader istrmrdr = new InputStreamReader ( istrm ); BufferedReader buffrdr = novo BufferedReader ( istrmrdr );
seqüência de dados; while (( data = buffrdr.readLine ()) = null !) {System.out.println ( data); }
mesma forma, você pode capturar o fluxo de erro usando Processo getErrorStream ' e usando um fluxo de entrada buffer para lidar com os dados. Seu aplicativo também pode enviar dados para fluxo de entrada o processo de 'via fluxo de saída do aplicativo. Use Processo "método getOutputStream e tamponar o fluxo de saída.
Saindo
Capturar o valor de saída do processo usando o Process " método exitValue para determinar se ele saiu normalmente. Assegurar o processo saiu usando o Process "método waitFor para fazer com que o segmento atual para aguardar o processo para sair. Por exemplo, capturar o valor de saída em uma variável, que pode ser usado mais tarde para tomar decisões sobre como o aplicativo irá continuar:
int ev = 0; if ( p.waitFor () = 0 !) { Ev = p.exitValue (); }
Um processo pode ser morto usando o Process "método
destruir
Considerações
Java 5 introduziu a classe ProcessBuilder para substituir Runtime.exec . ProcessBuilder torna mais fácil de personalizar o processo , e proporciona melhor controle sobre iniciar o processo.
Avisos
Uma das principais características da linguagem de programação Java é a sua portabilidade a múltiplas plataformas de computação . Chamando processos externos que são específicos para um determinado sistema operacional mantém o seu pedido de ser portátil. Evite usar Runtime.exec quando um método para realizar o mesmo objetivo existe na linguagem Java.