Ir para o conteúdo
  • 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

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.