Newsgroup: it.comp.java
Titolo: reindirizzare l'output

Ciao a tutti
Ho un problema.
Qualcuno può darmi una mano?
ipotizziamo che nella mia applicazione java esegua un comando da shell,
in particolare un file batch, che sputerà a video il risultato, come
faccio a reindirizzare quest'output su un oggetto java, in modo poi da
poter maneggiarlo nell'applicazione?
Grazie

Credo
InputStream in = Runtime.exec("quello che devi
eseguire").getInputStream();
//leggi dallo input stream le cose che sputa fuori il comando che hai
eseguito.
Dico credo, perchè non l'ho provato.

Grazie!!!

Non sono sicuro che funzioni!!!!!!
Io ho fatto così:
Process p = Runtime.getRuntime().exec( "mioScript");
    BufferedReader in = new BufferedReader(new
InputStreamReader(p.getInputStream()));
    while ( true ) {
        String s = in.readLine();
        if ( s == null ){
            System.out.println("Stringa Nulla!!!");
            break;}
        else{
        System.out.println(s);
        }
Ma mi da sempre Stringa Nulla!!!
Dove sbaglio??????
Grazie mille a chi vorrà rispondermi

 writes:
0001 Process p = Runtime.getRuntime().exec( "mioScript");
0002 BufferedReader in = new BufferedReader(new
0003 InputStreamReader(p.getInputStream()));
0004 while ( true ) {
0005     String s = in.readLine();
0006     if ( s == null ){
0007         System.out.println("Stringa Nulla!!!");
0008         break;}
0009     else{
0010       System.out.println(s);
0011     }
0012 }
IMc> Ma mi da sempre Stringa Nulla!!!
Se  intendi che  ti dice  stringa  nulla alla  fine dell'output  dello
stream direi che è normale.
Se invece non vedi niente da Java ma vedi output a video... Sei sicuro
che l'output non sia si stderr ?
-- 
 /\            ___
/___/\__|_|\_|__|___Gian Uberto Lauri_____________________
  //--\ | | \|  |   Integralista GNUslamico  
\/		    e allevatore di bug da competizione

Non alla fine dell'output, ma quel while viene eseguito una sola volta
e sulla console di java mi spunta "Stringa Nulla!!".
Non capisco, ipotizzando anche che lo script che passo al metodo exec()
non sia corretto il sistema operativo dovrebbe scrivere qualcosa a
video che quindi verrebbe memorizzato nella stringa "s" che quindi
risulterebbe diversa da null!!!
Quindi probabilmente è sbagliato il modo di prelevare l'output della
shell?
O sbaglio???
Help!

a me sta cosa funziona...
import java.io.*;
public class ProvaIO{
	public static void main(String[] args)throws Exception{
		InputStream in = Runtime.getRuntime().exec("cmd /c \"dir
c:\\\"").getInputStream();
		int c = 0;
		while((c = in.read()) != -1){
			System.out.write(c);
		}
	}
}

 writes:
IMc> probabilmente è sbagliato il modo di prelevare l'output della
IMc> shell?
Direi di no, lo ho provato la tua tecnica di programmazione con questo
scriptino di prova
#!/bin/bash
echo -e "Ciao"
echo -e "Ciao"
echo -e "Ciao"
echo -e "Ciao\c"
e mi stampa tutte quattro le righe.
Per questo ho avuto il dubbio che lo script facesse output su stderr.
// BTW, se ci sono problemi a lanciare lo script usualmente ti becchi una
// IOException


Grazie a tutti,
ho scoperto perchè non mi andava , Non utilizzavo l'interprete dei
comandi cmd esplicitamente!!!! Credendo bastasse scrivere il nome dello
script!!!
Ora va anche a me!!!!
Grazie di nuovo