Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

NameException

Como ler output de novo Processo

Recommended Posts

NameException

Boas pessoal...

Estou desenvolvendo um software em JAVA e neste momento, para resolver um certa situação, necessito de criar um novo Processo, e guardar o seu output, para posteriormente o processar. A dificuldade está em ter acesso ao referido output. Como exemplo, tenho o seguinte:

Process process = Runtime.getRuntime().exec("wc -l *.java");

Mas não observo nada como output. No limite, o que mais me convinha era redireccionar o output para um ficheiro, mas nem isso:

Process process = Runtime.getRuntime().exec("wc -l *.java > output.txt");

Já experimentei ler o output gerado pelo novo processo

Process process = Runtime.getRuntime().exec("wc -l *.java");

BufferedReader in = new BufferedReader(  new InputStreamReader(process.getInputStream()));  
String line = null;  
while ((line = in.readLine()) != null) {  
    System.out.println(line); 
}

Alguém já se deparou com a mesma situação? Ideias?

Desde já o meu obrigado

Share this post


Link to post
Share on other sites
Knitter

Com a InputStream que estás a ler devias ter acesso, no entanto estás a fazer um erro, não podes fazer buffer dos dados. Segundo a documentação não deves fazer uso de buffers para ler ou escrever para o processo.

A leitura e escrita de dados para os processos é algo que é afectado pela plataforma em que estás a executar, e devido à particularidade do sistema, o uso de buffers afecta o resultado. Retira daí os buffers e confirma que o processo, quando executado sozinho, escreve dados para o output.

Share this post


Link to post
Share on other sites
NameException

Boas...

Pois essa é mesmo a questão... É que os resultados não estão a ser escritos em lado nenhum. Nem para o stdout nem para o ficheiro, quando peço o seu redirecionamento.

A opção de ler com o buffer, foi apenas após testar as duas opções anteriores... Neste momento estou a testar em ambiente linux, mas pretendo que fique multiplataforma.... Existe outra alternativa? Como poderei fazer?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.